2014-08-31 2 views
2

Я пытаюсь перекрещивать демо-версию для малиныPi. Я использую CMake, но ниже - команда linkng. Важной частью является то, что libvgfont.a находится в самом конце:Cross Compile не находит ссылки

/home/justinvf/raspi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/armlinux-gnueabihf-g++  CMakeFiles/CamHack.dir/opencv_demo.cpp.o -o CamHack -rdynamic /home/justinvf/raspi/rootfs/lib/libmmal_core.so /home/justinvf/raspi/rootfs/lib/libmmal_util.so /home/justinvf/raspi/rootfs/lib/libmmal_vc_client.so /hom\ 
e/justinvf/raspi/rootfs/lib/libvcos.so /home/justinvf/raspi/rootfs/lib/libbcm_host.so /home/justinvf/raspi/rootfs/lib/opencv/libopencv_highgui.so /home/justinvf/raspi/rootfs/lib/opencv/libopencv_core.so /home/justinvf/raspi/rootfs/lib/opencv/libopencv_imgproc.so /home/justinvf/raspi/rootfs/lib/opencv/libopencv_objdetect.so /home/justinvf/raspi/rootfs/lib/libo\ 
penmaxil.so /home/justinvf/raspi/rootfs/lib/libEGL.so -lpthread -lm -lrt /home/justinvf/raspi/rootfs/opt/vc/src/hello_pi/libs/vgfont/libvgfont.a -Wl,-rpath,/home/justinvf/raspi/rootfs/lib:/home/justinvf/raspi/rootfs/lib/opencv 

Я получаю сообщение об ошибке о неопределенных ссылок, не делает для меня смысл:

opencv_demo.cpp:(.text+0xc10): undefined reference to `gx_graphics_init(char const*)' 
opencv_demo.cpp:(.text+0xc38): undefined reference to `gx_create_window(unsigned int, unsigned int, unsigned int, GRAPHICS_RESOURCE_TYPE_T, GRAPHICS_RESOURCE_HANDLE_TABLE_T**)' 
opencv_demo.cpp:(.text+0xc54): undefined reference to `gx_create_window(unsigned int, unsigned int, unsigned int, GRAPHICS_RESOURCE_TYPE_T, GRAPHICS_RESOURCE_HANDLE_TABLE_T**)' 

libvgfont.a определенно имеет эти ссылки:

nm -g /home/justinvf/raspi/rootfs/opt/vc/src/hello_pi/libs/vgfont/libvgfont.a | grep gx_graphics_init 
000025d8 T gx_graphics_init 

Это мой первый кросс-компиляционный проект, поэтому я угадываю что-то глупое. Хотя бы очень понравилась какая-то помощь!

+0

Вы уверены, что библиотеки и объектные файлы упорядочены правильно? – 0x499602D2

+0

Чувствует себя как недостающая зависимость, которая может быть результатом некоторых параметров cmake ... Когда вы говорите «кросс-компиляция», вы имеете в виду, что вы создаете OpenCV на своем компьютере (x86) для передачи на Pi (РУКА)? Или ты просто строишь на Пи? – tomwhipple

+0

Кроме того, какую версию OpenCV вы используете? – tomwhipple

ответ

1

libvgfont.a - это библиотека C, скомпилированная с помощью cc. Добавление extern «C» в заголовок vffont.h устраняет проблему. Для получения дополнительной информации см. https://stackoverflow.com/a/12994075/1704581