交叉编译和库

Cross-compilation and libraries

在交叉编译过程中,我遇到了这个链接器错误:

/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 

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

我不明白 "why" 链接器找不到该库。 在这种情况下,您建议如何进一步调查?

链接器需要导入带有 .a 库扩展名的库以进行链接器操作,因为它包含 类 的签名和链接器进行链接所需的函数,而 .so 库是在运行时使用的共享对象。

你需要找到你有libfontconfig.a的目录(例如:通过命令locate libfontconfig.a或'find / -name libfontconfig.a')然后用-[=将它添加到命令行15=].