首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用zmq API编译C代码

使用zmq API编译C代码
EN

Stack Overflow用户
提问于 2013-03-09 22:52:32
回答 2查看 10.2K关注 0票数 9

我无法使用ZeroMQ API编译内置示例hwserver.c。我试过了所有可能的方法。

代码语言:javascript
复制
gcc -lzmq hwserver.c -o hwserver

它会提示我:

代码语言:javascript
复制
 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

我在ubuntu-12.10上使用zeromq-3.2.2

真的很感谢任何人的帮助。

谢谢,

-Sam

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-09 22:55:01

gcc的参数顺序确实很重要。

试一试

代码语言:javascript
复制
 gcc -Wall -g hwserver.c -lzmq -o hwserver

您首先需要警告和优化或调试标志(例如,用于所有警告的-Wall,用于调试信息的-g ),然后是可选的预处理器标志(如-D-I,但您没有它们),然后是源文件,最后是库-lzmq (顺序是相关的:从高级库到低级库)和输出选项-o hwserver (可能在其他地方)。

请阅读gcc文档,特别是关于invoking GCC的章节。

别忘了-Wall:你真的想得到所有的警告,你应该改进你的代码,直到没有警告。您甚至可以希望-Wextra获得更多额外的警告。

不要忘记调试信息标志-g:您需要使用gdb调试器来调试您的程序。

然后,使用-O-O2来优化二进制程序(编译器将生成更高效,但可调试性较差的机器码)。只有当你的程序被调试时才会关心这一点。

一旦您想要开发实际大小的C程序(即,您的项目由几个源文件和一些头文件组成),您就需要一个构建器基础设施,如GNU make (一个非常常见的构建器;您可以尝试使用omake )。

另请参阅this answer to a related question。

票数 29
EN

Stack Overflow用户

发布于 2013-12-23 14:04:23

再试试

代码语言:javascript
复制
gcc hwserver.c -o hwserver -lzmq

您的参数顺序不正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15312034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档