首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用makefile编译时对`zmq_ctx_new‘的未定义引用

使用makefile编译时对`zmq_ctx_new‘的未定义引用
EN

Stack Overflow用户
提问于 2021-11-15 07:38:57
回答 1查看 710关注 0票数 0

我在我的linux口味的NVIDIA Jetson上安装了zmq,如下所示:

代码语言:javascript
复制
sudo apt-get install libzmq3-dev

我创建了一个简单的ZMQ服务器,它在C++程序中使用了推拉架构。我能够使用CLI编译它,如下所示:

代码语言:javascript
复制
$ gcc -Wall -g server.cpp -lstdc++ -lzmq -o out

然后,我将这些代码与更多的库和依赖项集成到我的更大的应用程序中。这是使用makefile (makefile.config)编译的。要编译更新的应用程序,我需要将-lzmq标志添加到原始makefile。我就是这样做的:

代码语言:javascript
复制
-COMMON_FLAGS += -Wall -Wno-deprecated-declarations -std=c++11 $(INCPATHS)
+COMMON_FLAGS += -Wall -g -lstdc++ -lzmq -Wno-deprecated-declarations -std=c++11 $(INCPATHS)

但是在运行sudo make clean && sudo make时,我得到

代码语言:javascript
复制
Linking: ../../bin/sample_uff_mask_rcnn_debug
../../bin/dchobj/sampleUffMaskRCNN.o: In function `main':
/home/virus/Desktop/optimisation/custom-inference-mrcnn/maskRCNN/sampleUffMaskRCNN.cpp:717: undefined reference to `zmq_ctx_new'
/home/virus/Desktop/optimisation/custom-inference-mrcnn/maskRCNN/sampleUffMaskRCNN.cpp:718: undefined reference to `zmq_socket'
/home/virus/Desktop/optimisation/custom-inference-mrcnn/maskRCNN/sampleUffMaskRCNN.cpp:724: undefined reference to `zmq_ctx_new'
/home/virus/Desktop/optimisation/custom-inference-mrcnn/maskRCNN/sampleUffMaskRCNN.cpp:725: undefined reference to `zmq_socket'
/home/virus/Desktop/optimisation/custom-inference-mrcnn/maskRCNN/sampleUffMaskRCNN.cpp:726: undefined reference to `zmq_connect'
/home/virus/Desktop/optimisation/custom-inference-mrcnn/maskRCNN/sampleUffMaskRCNN.cpp:737: undefined reference to `zmq_recv'
collect2: error: ld returned 1 exit status
../Makefile.config:301: recipe for target '../../bin/sample_uff_mask_rcnn_debug' failed
make: *** [../../bin/sample_uff_mask_rcnn_debug] Error 1

Makefile很简单

代码语言:javascript
复制
OUTNAME_RELEASE = sample_uff_mask_rcnn
OUTNAME_DEBUG   = sample_uff_mask_rcnn_debug
EXTRA_DIRECTORIES = ../common
.NOTPARALLEL:
MAKEFILE ?= ../Makefile.config
include $(MAKEFILE)

原始的makefile.config可以找到这里

我觉得我搞砸了makefile,因为zmq在使用gcc编译时工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 07:28:26

好的,正如@mad科学家所指出的,我错误地将链接器标志-lzmq添加到编译器行,这意味着只包含编译标志,而不是链接器标志。

这就是我所做的改变:

代码语言:javascript
复制
 COMMON_LIBS += $(CUDART_LIB)
+COMMON_LIBS += -lzmq
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69970824

复制
相关文章

相似问题

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