Скомпилировать простой мир Hello ZeroMQ C, компилировать флаги?

Пытаясь скомпилировать пример hello_world.c из учебника zeromq: http://zguide.zeromq.org/page:all#Ask-and-Ye-Shall-Receive Уверен, что у меня все установлено в OSX Mountain Lion.

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.

в /usr/local/lib:

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

и в /usr/local/включают:

zmq.h
zmq_utils.h

и echo $ PATH:

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

Ответ 1

Вы указываете библиотеки ZeroMQ в своем вопросе, но на самом деле вы не связываетесь с ними. Измените в командной строке:

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

Объяснение дополнительных аргументов:

  • -L/usr/local/lib сообщает компоновщику добавить путь (/usr/local/lib) к пути поиска библиотеки.
  • -Lzmq сообщает библиотеке ссылку на библиотеку zmq.

Переменная среды $PATH не имеет к этому никакого отношения, она просто сообщает оболочке, где искать команды.