相关疑难解决方法(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

我是Linux的新手(使用Ubuntu 14.04 LTS 64bit),来自Windows,我正试图移植我现有的CUDA项目.

通过链接时

/usr/local/cuda/bin/nvcc -arch=compute_30 -code=sm_30,compute_30 -o Main.o Display.o FileUtil.o Timer.o NeuralNetwork.o -L/usr/lib -L/usr/local/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/cuda/lib64 -lGLEW -lglfw3 -lGL -lGLU -lcuda -lcudart
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误:

/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_clipboard.c.o): undefined reference to  symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [CUDANN] Error 1
Run Code Online (Sandbox Code Playgroud)

答案似乎与本文中的解决方案密切相关(奇怪的链接错误:DSO从命令行中丢失),但鉴于我对Linux的经验不足,我无法使它们适应我自己的问题.

关于问题可能是什么的任何想法?

以下是编译期间的完整输出:https://gist.github.com/wbolden/857eddd11e4dcb915c02

这是我对Makefile的尝试:https: //gist.github.com/wbolden/135033daae04ed0d8cf3

linux x11 linker nvcc glfw

14
推荐指数
2
解决办法
5万
查看次数

命令行缺少DSO(使用CMake)

我试图通过使用Cmake再次编译所有内容,将Windows的C ++项目转换为Debian。

我不是很习惯在Linux上工作,但是已经设法正确安装了所有东西。

这是错误:

/usr/bin/ld: ../shared/libshared.a(BigNumber.cpp.o): undefined reference to symbol 'BN_new@@OPENSSL_1.0.2d'

//usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.2: error adding symbols: DSO missing from command line
Run Code Online (Sandbox Code Playgroud)

这实际上似乎是一个常见问题,但我不知道如何处理Cmake。我已经看到了一些答案,例如:

命令行缺少DSO

如何告诉CMake链接源目录中的静态库?

如何在cmake文件中添加链接器或编译标志?

我有点困惑,您能帮我了解我需要使用Cmake吗?

谢谢

c++ linux cmake libcrypto

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

GLEW + cmake 链接失败“对符号 glDrawElements 的未定义引用”+“命令行中缺少 DSO”

我正在将 GLEW、SDL2 和 Assimp 与 Cmake 联系起来。构建 .o 文件时似乎工作正常,但是在链接它们时出现这些错误

:-1: error: CMakeFiles/"Projectpath".cpp.o: undefined reference to symbol 'glDrawElements'
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1:-1: error: error adding symbols: DSO missing from command line
:-1: error: collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

这是链接库的 Cmakefile 部分

find_package(OpenGL)
find_package(GLEW)
find_package(SDL2)
find_package(Assimp)
#Include(FindPkgConfig)
#PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
set(INCLUDE_DIRS ${OpenGL_INCLUDE_DIRS} ${SDL2_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS} ${Assimp_INCLUDE_DIRS})
set(LIBS ${LIBS} ${OpenGL_LIBRARIES} ${SDL2_LIBRARIES} ${GLEW_LIBRARIES} ${Assimp_LIBRARIES} )
include_directories(${INCLUDE_DIRS})

target_link_libraries(${PROJECT_NAME} ${LIBS})
Run Code Online (Sandbox Code Playgroud)

我在阅读时尝试更改链接顺序,这可能是一个问题。我还添加了 OpenGL 的东西,因为错误中的 libGL 东西,它似乎不起作用。我还阅读了有关使用检查依赖项的内容 pkg-config --print-requires --print-requires-private glew,但问题是它依赖于 20 个不同的库。我需要链接所有这些吗?

并不是我没有正确的库,我上周在这台计算机上创建了一个基本的 OpenGL 程序并且运行良好(我使用了另一种链接我的库的方法,并且还使用了 Code::Blocks 而不是 Qt-Creator) …

c++ opengl glew dynamic cmake

5
推荐指数
1
解决办法
3792
查看次数