C-code kompilieren mit zmq-API
Bin ich nicht kompilieren, builtin Beispiel hwserver.c mit Hilfe der ZeroMQ-APIs. Ich habe versucht, jeden möglichen Weg.
gcc -lzmq hwserver.c -o hwserver
Er fordert mich auf, mit:
hwclient.c:(.text+0x22): undefined reference to `zmq_ctx_new'
hwclient.c:(.text+0x3a): undefined reference to `zmq_socket'
hwclient.c:(.text+0x52): undefined reference to `zmq_connect'
hwclient.c:(.text+0x94): undefined reference to `zmq_send'
hwclient.c:(.text+0xb8): undefined reference to `zmq_recv'
hwclient.c:(.text+0xe4): undefined reference to `zmq_close'
hwclient.c:(.text+0xf0): undefined reference to `zmq_ctx_destroy'
collect2: error: ld returned 1 exit status
Ich bin mit zeromq-3.2.2 auf ubuntu-12.10
Jede Hilfe wirklich dankbar.
Dank,
-Sam
- Ich habe Antwort aber downvoted die Frage, denn es ist wirklich eine FAQ
Du musst angemeldet sein, um einen Kommentar abzugeben.
Reihenfolge der Argumente zu
gcc
nicht egal viel.Versuchen
Müssen Sie zuerst die Warnung und Optimierung oder debugging-flags (z.B.
-Wall
für alle Warnungen-g
für debugging-information), dann die optionalen Präprozessor-flags (wie-D
oder-I
aber Sie haben keine von Ihnen), dann die source-Dateien, und zuletzt die Bibliotheken-lzmq
(Reihenfolge relevant ist: von der high-level-Bibliotheken auf niedrigem Niveau) und die output-option-o hwserver
(was könnte an anderer Stelle).Lesen Sie die
gcc
Dokumentation, insbesondere das Kapitel über Aufruf GCC.Vergessen Sie nicht, die
-Wall
: Sie wirklich wollen, bekommen Sie alle Warnungen, und Sie sollten verbessern Sie Ihre code, bis keine Warnungen gegeben. Man könnte sogar wollen-Wextra
erhalten Sie weitere extra-Warnungen.Vergessen Sie nicht, die debugging-Informationen flag
-g
: Sie müssen dengdb
- debugger zum Debuggen Ihres Programms.Später verwenden
-O
oder-O2
zur Optimierung der binären Programm (der compiler dann produzieren effizienter, aber weniger debugfähiger, Maschinencode). Interessieren nur, wenn Sie Ihr Programm Debuggen.So schnell wie Sie wollen zu entwickeln, die real-Größe von C-Programmen (z.B. Ihr Projekt aus mehreren Quell-Dateien und einige header-Datei[en]), benötigen Sie einen builder-Infrastruktur, wie GNU make (eine sehr häufige builder; Sie könnten versuchen, omake statt).
Siehe auch diese Antwort zu einer verwandten Frage.
versuchen Sie es erneut
Ihre Reihenfolge der Parameter ist falsch.