ZeroMQ 库链接:未定义对符号的引用,添加符号时出错:命令行中缺少 DSO

ZeroMQ 库链接:未定义对符号的引用,添加符号时出错:命令行中缺少 DSO

当编译一个使用 ZeroMQ 的简单 c++ 文件时,我得到:

/usr/bin/ld: /tmp/ccbHbSAY.o: undefined reference to symbol '_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4'
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

我认为这是在试图告诉我,我正在调用一个我所链接的共享库中不存在的符号。这是我的编译命令:

gcc -Wall -I/usr/local/include zeromq_worker.cpp /usr/local/lib/libzmq.so.5.0.2

我尝试使用libzqm.solibzmq.so.5,它们也在/usr/local/lib,但出现相同的错误

另外,_ZNSt8ios_base4InitD1Ev@@GLIBCXX_3.4是某些结构的编译名称。它是哪一个?我认为这有助于理解错误的来源。

答案1

如果它是 C++ 文件,则使用g++not 。gcc

另外,通常也不会以这种方式明确指定库:通常您应该给出一个链接指令,如-lzmq前面所述,并在必要时加上形式为的库搜索路径指令-L /usr/local/lib

因此尝试

g++ -Wall -I /usr/local/include zeromq_worker.cpp -L /usr/local/lib -lzmq

相关内容