Intereting Posts

Скомпилировать простой мир 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 / include:

 zmq.h zmq_utils.h 

и echo $ PATH:

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

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

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

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

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

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