C++ g++;即使使用-ldl标志也无法链接到libdl
我试图为Matrix Vision销售的USB摄像头(mvBlueFOX)编译一个示例应用程序。它们为我提供了应用程序的源代码、一个make文件和一组预编译的共享库。但是,make文件无法成功构建可执行文件。“make”返回:C++ g++;即使使用-ldl标志也无法链接到libdl,c++,linker,g++,C++,Linker,G++,我试图为Matrix Vision销售的USB摄像头(mvBlueFOX)编译一个示例应用程序。它们为我提供了应用程序的源代码、一个make文件和一组预编译的共享库。但是,make文件无法成功构建可执行文件。“make”返回: carter@carter-Lenovo-G780:~/mvimpact_acquire-x86-1.12.22.254/apps/LiveSnap$ make make[1]: Entering directory `/home/carter/mvimpact_acqu
carter@carter-Lenovo-G780:~/mvimpact_acquire-x86-1.12.22.254/apps/LiveSnap$ make
make[1]: Entering directory `/home/carter/mvimpact_acquire-x86-1.12.22.254/apps/LiveSnap/x86'
/usr/bin/g++ -O2 -Wall -W -fPIC -D_REENTRANT -D_GNU_SOURCE -D_MAJOR_VERSION=1 -D_MINOR_VERSION=12 -D_BUILD_VERSION=22 -D_BUILD2_VERSION=254 -DMALLOC_TRACE -DNDEBUG -I../../.. -o LiveSnap LiveSnap.o -L../../../lib/x86 -lmvDeviceManager -lmvPropHandling -lm -lpthread -ldl
../../../lib/x86/libmvPropHandling.so: undefined reference to `dlsym'
../../../lib/x86/libmvPropHandling.so: undefined reference to `dlopen'
../../../lib/x86/libmvPropHandling.so: undefined reference to `dlclose'
collect2: ld returned 1 exit status
make[1]: *** [LiveSnap] Error 1
make[1]: Leaving directory `/home/carter/mvimpact_acquire-x86-1.12.22.254/apps/LiveSnap/x86'
make: *** [all] Error 2
link命令的简化版本:
g++ -o LiveSnap x86/LiveSnap.o -lmvDeviceManager -ldl
仍然返回:
../../../lib/x86/libmvPropHandling.so: undefined reference to `dlsym'
../../../lib/x86/libmvPropHandling.so: undefined reference to `dlopen'
../../../lib/x86/libmvPropHandling.so: undefined reference to `dlclose'
正在找到libdl.so,但进程仍然失败。这是我的libdl版本的问题还是有其他问题?对于那些对解决此问题感兴趣的人,我能够成功地构建并运行从电影矩阵网站下载的更新版本的代码。我相机附带的CD上提供的版本是1.2.22,而网站上提供的版本是2.5.2。旧版本无法生成的原因仍然未知,但问题似乎在新版本的软件中得到了解决。对于那些对解决此问题感兴趣的人,我能够成功地生成并运行从Movie Matrix网站下载的新版本的代码。我相机附带的CD上提供的版本是1.2.22,而网站上提供的版本是2.5.2。旧版本无法生成的原因仍然未知,但问题似乎在新版本的软件中得到了解决。如果您的gcc版本高于4.6.2,只需在-lmvDeviceManager之前添加标志“-Wl,-no as needed”,如果您的gcc版本高于4.6.2,只需在-lmvDeviceManager之前添加标志“-Wl,-no as needed”