2012-09-18 117 views
11

試圖從zeromq教程編譯示例hello_world.c: http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive 很確定我已經安裝了OSX Mountain Lion中的所有東西。編譯簡單的hello world ZeroMQ C例子,編譯標誌?

clang -Wall hwserver.c -o hwserver 

給我一個錯誤:

Undefined symbols for architecture x86_64: 
"_zmq_bind", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_ctx_new", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_msg_close", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_msg_data", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_msg_init", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_msg_init_size", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_msg_recv", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_msg_send", referenced from: 
    _main in hwserver-OgrEe6.o 
"_zmq_socket", referenced from: 
    _main in hwserver-OgrEe6.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

我不是最有經驗的C.不知道如果我一定要添加一個編譯器標誌爲ZMQ dylib或頭或我的$ PATH是關閉。

libzmq.3.dylib 
libzmq.a 
libzmq.dylib 
libzmq.la 

,並在/ usr /本地/包括:

zmq.h 
zmq_utils.h 

和回聲$ PATH:

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/lib/:/usr/local/include/ 

回答

22

您列出

在/ usr/local/lib目錄

在你的問題的ZeroMQ庫,但你實際上並沒有鏈接與他們。在命令行改成這樣:

clang -Wall hwserver.c -o hwserver -L/usr/local/lib -lzmq 

的額外的參數說明:

  • -L/usr/local/lib告知鏈接的路徑(/usr/local/lib)添加到庫搜索路徑。
  • -lzmq告訴圖書館鏈接zmq圖書館。

$PATH環境變量與此無關,它只是告訴shell在哪裏查找命令。

+0

我可能會添加鏈接器參數需要位於'hwserver.c -o hwserver'之後。 – nnnmmm