C++ 交叉编译与图书馆

C++ 交叉编译与图书馆,c++,linker,cross-compiling,linker-errors,fontconfig,C++,Linker,Cross Compiling,Linker Errors,Fontconfig,在交叉编译期间,我遇到以下链接器错误: /home/tech/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lfontconfig 这是g++命令行: /home/tech/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g

在交叉编译期间,我遇到以下链接器错误:

/home/tech/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lfontconfig
这是g++命令行:

/home/tech/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++ -Wl,-rpath-link,/mnt/rasp-pi-rootfs/opt/vc/lib -Wl,-rpath-link,/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/mnt/rasp-pi-rootfs/lib/arm-linux-gnueabihf -mfloat-abi=hard --sysroot=/mnt/rasp-pi-rootfs -Wl,-O1 -o fontconfig fontconfig.o   --sysroot=/mnt/rasp-pi-rootfs -lpthread -L/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/ -lfreetype -lfontconfig 

我不明白“为什么”链接器找不到那个库。
在这种情况下,您建议如何进一步调查?

链接器需要导入库。库的扩展用于链接器操作,因为它包含链接器进行链接时所需的类和函数的签名。因此库是运行时使用的共享对象


您需要找到包含libfontconfig.a的目录(例如:通过命令locate libfontconfig.a或'find/-name libfontconfig.a'),然后将其添加到命令行中,并使用-L/path/of/directory。

感谢您的解释!我安装了静态库(通过安装-dev包)。对于这个特定的库,它起作用了!但是对于另一个有同样错误的人来说没有。示例:在出现libicui18n not found错误之前,安装带有.a文件的-dev包会导致另一个错误:libicui18n.so:undefined引用`\ucxa\u throw\u bad\u array\u new_length@CXXABI_1.3.8'. 但这一次它说得很清楚*.so./home/tech/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++-c-pipe-marm-mfpu=vfp-mtune=arm1176jzf-s-march=armv6zk-mabi=aapcs-linux-mfloat-abi=hard-sysroot=/mnt/rasp-pi-rootfs-O2-std=gnu++-0x-Wall-W-fPIC-I-I-I-I/usr/include/x86μ64-linux-gnu-include/usi/2-I../../mkspecs/devices/linux-rasp-pi-g++-o icu.o icu.cpp/home/tech/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-g++-Wl,-rpath-link,/mnt/rasp-pi-rootfs/opt/vc/lib-Wl,-rpath-link,/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf-Wl-rpath-link,/mnt/rasp pi rootfs/lib/arm linux gnueabihf-mfloat abi=hard--sysroot=/mnt/rasp pi rootfs-Wl,-O1-o icu icu.o--sysroot=/mnt/rasp pi rootfs-lpthread-licui18n-licuuc-licudata是的,您正在使用的库的版本似乎没有符号u cxa\u throw\u bad\u array\u new_length@CXXABI_1.3.8. 您可以通过使用单个参数(即.a库)调用的命令nm来检查.a库中可用的符号对象。@FrancescoArgese:链接器不要求您针对静态库进行交叉编译链接。通过静态编译,您最终会将库编译为附带的二进制文件,但编译成功并不一定要这样做。
ls /mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libfontconfig*

/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libfontconfig.so.1
/mnt/rasp-pi-rootfs/usr/lib/arm-linux-gnueabihf/libfontconfig.so.1.8.0