2016-04-28 2 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 

Это г ++ в командной строке:

/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

Linker требует библиотеки импорта с расширением .a расширения библиотеки для операций компоновщика, поскольку в ней содержатся подписи классов и функций, необходимых компоновщику для компоновки, в то время как библиотеки .so - это общие объекты, используемые во время выполнения.

Вам необходимо найти каталог, в котором у вас есть libfontconfig.a (например: через команду locate libfontconfig.a или 'find/-name libfontconfig.a'), а затем добавить его в командную строку с -L/path/из каталога /.

+0

Благодарим за объяснение! Я установил статические библиотеки (установив пакет -dev). Для этой конкретной библиотеки это сработало! Но для другого с той же ошибкой этого не произошло. Пример: до того, как я обнаружил ошибку libicui18n, установка -dev-пакета с .a-файлами приводит к другому: 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