交叉编译和库

时间:2016-04-28 18:37:35

标签: 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++ -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

我不明白"为什么"链接器找不到该库。 你有什么建议在这种情况下进一步调查?

1 个答案:

答案 0 :(得分:-1)

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

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