2016-04-28 163 views
0

在一个交叉编译我得到这个连接错误:交叉编译和库

/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

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

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

+0

感谢您的解释!我安装了静态库(通过安装-dev软件包)。对于这个特定的库它工作!但对于另一个具有相同错误的人却没有。示例:在找到libicui18n未找到错误之前,使用.a文件安装-dev包会导致另一个问题:libicui18n.so:未定义对“[email protected]_1.3.8”的引用。但这一次它说明了* .so。 – Mark

+0

你能分享编译命令吗? –

+0

/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/usr/include/x86_64-linux-gnu -I/usr/include/freetype2 -I/usr/include -I ../../../ mkspecs/devices/linux-rasp -pi -g ++ -o icu.o icu.cpp – Mark