相关疑难解决方法(0)

奇怪的链接错误:命令行中缺少DSO

当我编译openvswitch-1.5.0时,我遇到了以下编译错误:

 gcc -Wstrict-prototypes -Wall -Wno-sign-compare -Wpointer-arith
     -Wdeclaration-after-statement -Wformat-security -Wswitch-enum -Wunused-parameter -Wstrict-aliasing -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wold-style-definition -Wmissing-prototypes -Wmissing-field-initializers -Wno-override-init  -g -O2 -export-dynamic ***-lpthread***  -o utilities/ovs-dpctl utilities/ovs-dpctl.o lib/libopenvswitch.a
 /home/jyyoo/src/dpdk/build/lib/librte_eal.a
 /home/jyyoo/src/dpdk/build/lib/libethdev.a
 /home/jyyoo/src/dpdk/build/lib/librte_cmdline.a
 /home/jyyoo/src/dpdk/build/lib/librte_hash.a
 /home/jyyoo/src/dpdk/build/lib/librte_lpm.a
 /home/jyyoo/src/dpdk/build/lib/librte_mbuf.a
 /home/jyyoo/src/dpdk/build/lib/librte_ring.a
 /home/jyyoo/src/dpdk/build/lib/librte_mempool.a
 /home/jyyoo/src/dpdk/build/lib/librte_malloc.a -lrt -lm 
     /usr/bin/ld: /home/jyyoo/src/dpdk/build/lib/librte_eal.a(eal.o): undefined reference
     to symbol 'pthread_create@@GLIBC_2.2.5'
     /lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from 
     command line
Run Code Online (Sandbox Code Playgroud)

如果我试着看到它的符号libpthread,它看起来很好.

$ readelf -s /lib/x86_64-linux-gnu/libpthread.so.0 | grep pthread_create
   199: 0000000000008220  2814 FUNC    GLOBAL DEFAULT   13 pthread_create@@GLIBC_2.2.5
   173: 0000000000008220  2814 FUNC    LOCAL  DEFAULT   13 __pthread_create_2_1
   462: …
Run Code Online (Sandbox Code Playgroud)

linker gcc compiler-errors undefined-reference

188
推荐指数
7
解决办法
40万
查看次数

DSO在命令行中丢失

我正在尝试编译这样的C++程序:

$ g++ -o Sniffer_Train main.cpp Sniffer_train.cpp Sniffer_train.h -lmysqlclient -lpcap
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

/usr/bin/ld: /tmp/cct6xeXD.o: undefined reference to symbol
'pthread_join@@GLIBC_2.4' //lib/arm-linux-gnueabihf/libpthread.so.0:
error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我不知道这个错误意味着什么.任何帮助将不胜感激.

c++ linux g++ undefined-reference

43
推荐指数
1
解决办法
10万
查看次数

如何使用 CMake 在 Ubuntu 中查找和链接 OpenGL(mesa) 包

我是CMakeOpenGL 的新手。我现在需要在我的 Ubuntu 15.04 64 位 PC 上的项目中使用OpenGL作为库,该 PC 由CMake 3.0.2构建。

我已经为此工作了几天,几乎感到沮丧。我对一堆问题感到困惑。


台面和 OpenGL

首先,我使用 command安装了mesasudo apt-get install mesa-common-dev,这让我得到了mesa 10.5.2

然后我浏览包文件dpkg -L mesa-common-dev

/.
/usr
/usr/share
/usr/share/bug
...
/usr/share/bug/mesa-common-dev/control

/usr/share/doc
...
/usr/share/doc/mesa-common-dev/faq.html

/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/dri.pc

/usr/include
/usr/include/GL
/usr/include/GL/gl.h
...
/usr/include/GL/glx_mangle.h
Run Code Online (Sandbox Code Playgroud)

问题 1:共享库 (.so) 和静态库 (.a) 在哪里?


制作

我现在有一个CMakeLists.txt, 名为 OpenGL 模块OPENGL

...
find_package(OPENGL REQUIRED)  # here is CMakeLists.txt:45
... …
Run Code Online (Sandbox Code Playgroud)

opengl cmake mesa

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

undefined-reference ×2

c++ ×1

cmake ×1

compiler-errors ×1

g++ ×1

gcc ×1

linker ×1

linux ×1

mesa ×1

opengl ×1