14

zeromqチュートリアルのサンプルhello_world.cをコンパイルしようとしています:http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive OSXMountainLion すべてがインストールされていることを確認してください。

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の経験が豊富ではありません。zmqdylibまたはヘッダーのコンパイラフラグを追加するのか、$PATHがオフになっているのかわかりません。

/ usr / local / lib内:

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

および/usr/ local / include:

zmq.h
zmq_utils.h

$ PATHをエコーし​​ます:

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

1 に答える 1

30

質問にZeroMQライブラリをリストしますが、実際にはそれらとリンクしていません。コマンドラインを次のように変更します。

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

追加の引数の説明:

  • -L/usr/local/lib/usr/local/libライブラリ検索パスにパス()を追加するようにリンカに指示します。
  • -lzmqライブラリにリンクするようにライブラリに指示しzmqます。

$PATH環境変数はこれとは何の関係もありません。コマンドを探す場所をシェルに指示するだけです。

于 2012-09-18T05:16:38.730 に答える