我正在尝试为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_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

链接命令的简化版本:
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版本的问题还是其他问题?

最佳答案

如果您的gcc版本高于4.6.2,则在-lmvDeviceManager之前添加标志'-Wl,-no-as-needed'

07-24 14:35