我正在尝试为 raspberryPi 交叉编译一个演示。我正在使用 CMake,但下面是 linkng 命令。重要的是 libvgfont.a 在最后:
/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
我收到关于 undefined reference 的错误,这对我来说没有意义:
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
这是我的第一个交叉编译项目,所以我在猜测一些愚蠢的事情。非常感谢一些帮助!
最佳答案
libvgfont.a 是一个C 库,用cc 编译。将 extern "C"添加到 vffont.h header 可解决此问题。有关详细信息,请参阅 https://stackoverflow.com/a/12994075/1704581
关于c++ - 交叉编译找不到引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25588574/