2013-06-19 2 views
1

Я пытаюсь скомпилировать пример приложения для USB-камеры (mvBlueFOX), продаваемой Matrix Vision. Они предоставляют мне исходный код для приложения, файл make и набор предварительно скомпилированных разделяемых библиотек. Тем не менее, файл make не удается успешно выполнить исполняемый файл. А "делать" возвращается:g ++ не может ссылаться на libdl даже с флагом -ldl

[email protected]:~/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 или есть еще одна проблема?

ответ

0

Для тех, кто заинтересован в решении этой проблемы, мне удалось успешно создать и запустить более новую версию кода, который я загрузил с веб-сайта Movie-Matrix. Версия, представленная на компакт-диске с моей камерой, была 1.2.22, тогда как версия с сайта была 2.5.2. Почему старая версия не удается построить, пока неизвестно, но проблема, похоже, решена в более новых версиях программного обеспечения.

0

Если ваша версия gcc выше 4.6.2, просто добавьте флаг «-Wl, - no-as-needed» перед -lmvDeviceManager

Смежные вопросы