PythonQ 240-8XX Manual de usuario Pagina 618

  • Descarga
  • Añadir a mis manuales
  • Imprimir
  • Pagina
    / 768
  • Tabla de contenidos
  • MARCADORES
  • Valorado. / 5. Basado en revisión del cliente
Vista de pagina 617
Kapitel 9: MySQL-APIs 597
gcc -g -o client test.o -L/usr/local/lib/mysql -lmysqlclient -lsocket -lnsl
Undefined first referenced
symbol in file
floor /usr/local/lib/mysql/libmysqlclient.a(password.o)
ld: fatal: Symbol referencing errors. No output written to client
Wenn das auf Ihrem System passiert, m¨ussen Sie die math-Bibliothek einschließen, indem
Sie -lm am Ende der Kompilier- / Link-Zeile hinzuf¨ugen.
9.4.7 Client-Programme bauen
Wenn Sie MySQL-Clients kompilieren, die Sie selbst geschrieben oder von Dritten erhalten
haben, m¨ussen diese mit der -lmysqlclient -lz-Option f¨ur den Link-Befehl gelinkt wer-
den. Eventuell sollten Sie auch eine -L-Option verwenden, um dem Linker mitzuteilen, wo
sich die Bibliothek befindet. Wenn zum Beispiel die Bibliothek in /usr/local/mysql/lib
installiert ist, benutzen Sie -L/usr/local/mysql/lib -lmysqlclient -lz f¨ur den Link-
Befehl.
F¨ur Clients, die MySQL-Header-Dateien benutzen, m¨ussen Sie eventuell eine -I-Option
angeben, wenn Sie sie kompilieren (zum Beispiel -I/usr/local/mysql/include), so dass
der Kompiler die Header-Dateien finden kann.
9.4.8 Wie man einen threaded Client herstellt
Die Client-Bibliothek ist fast Thread-sicher. Das gr¨oßte Problem besteht darin, dass die
Subroutinen in net.c’, die von Sockets lesen, nicht Interrupt-sicher sind. Das wurde mit
dem Hintergedanken gemacht, dass Sie eventuell Ihre eigenen Alarme haben ochten, die
ein langes Lesen vom Server unterbrechen onnen. Wenn Sie Interrupt-Handler f¨ur den
SIGPIPE-Interrupt installieren, sollte die Socket-Handhabung Thread-sicher sein.
In den ¨alteren Bin¨ardistributionen wurden die Client-Bibliotheken normalerweise nicht
mit der Thread-sicheren Option kompiliert (die Windows-Bin¨ardateien sind vorgabem¨aßig
Thread-sicher kompiliert). Neuere Bin¨ardistributionen sollten sowohl eine normale als auch
eine Thread-sichere Client-Bibliothek haben.
Um einen threaded Client zu erhalten, bei dem Sie den Client durch andere Threads
unterbrechen (interrupt) und Zeit¨uberschreitungen (Timeouts) setzen onnen, wenn Sie
mit dem MySQL-Server kommunizieren, sollten Sie die -lmysys-, -lstring-, und -ldbug-
Bibliotheken und den net_serv.o-Co de benutzen, den der Server benutzt.
Wenn Sie keine Unterbrechungen (Interrupts) oder Zeit¨uberschreitungen (Timeouts)
ben¨otigen, onnen Sie einfach eine Thread-sicher Client-Bibliothek (mysqlclient_r)
kompilieren und diese benutzen. Siehe Abschnitt 9.4 [MySQL-C-API], Seite 545. In
diesem Fall m¨ussen Sie sich nicht um die net_serv.o-Objektdatei oder die anderen
MySQL-Bibliotheken k¨ummern.
Wenn Sie einen threaded Client benutzen und Unterbrechungen (Interrupts) und
Zeit¨uberschreitungen (Timeouts) benutzen wollen, onnen Sie in umfangreicher Weise
die Routinen in der thr_alarm.c’-Datei benutzen. Wenn Sie Routinen aus der
Vista de pagina 617
1 2 ... 613 614 615 616 617 618 619 620 621 622 623 ... 767 768

Comentarios a estos manuales

Sin comentarios