Qt 5.8 Не удалось выполнить кросс-компиляцию по arm-none-linux-gnueabi?
Я скачал arm-none-linux-gnueabi из CodeSourcery версии 2011, после установки пути и конфигурации с этой командой
sudo ./configure \ -opengl es2 -no-xcb\ -release -silent \ -continue \ -opensource -confirm-license \ -prefix $DEVICE_PREFIX \ -hostprefix $HOST_PREFIX \ -sysroot $SYSTEM_ROOT \ -device $TARGET_DEV -option CROSS_COMPILE=${CC} \ -qt-libpng \ -qt-libjpeg \ -nomake examples \ -nomake tests
Получите эту ошибку:
выполнение теста конфигурации use_gold_linker + cd /home/amin/EMA/qt-everywhere-opensource-src-5.8.0/qtbase/config.tests && arm-none-linux-gnueabi-g++ -fuse-ld=gold -o conftest-out conftest.cpp cc1plus: ошибка: нераспознанный параметр командной строки '-fuse-ld=gold' test config.qtbase.tests.use_gold_linker FAILED выполнение теста конфигурации verifyyspec + cd /home/amin/EMA/qt-where-opensource-src-5.8.0/qtbase/config.tests/common/verifyyspec && /home/amin/EMA/qt-everywhere-opensource-src-5.8.0/qtbase/bin/qmake -qtconf /home/amin/EMA/qt-where-opensource-src-5.8.0/qtbase/bin/qt.conf "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += статическая консоль" "QMAKE_CFLAGS += --sysroot=/" "QMAKE_CXXFLAGS += --s /" "QMAKE_LFLAGS += --sysroot=/" /home/amin/EMA/qt-everywhere-opensource-src-5.8.0/qtbase/config.tests/common/verifyspec + cd /home/amin/EMA/qt-everywhere-opensource-src-5.8.0/qtbase/config.tests/common/verifyyspec && MAKEFLAGS= /usr/bin/make arm-none-linux-gnueabi-g++ -c -pipe -march=armv7-a -mtune=cortex-a8 -mfpu= неон -mthumb -march=armv7-a -mtune=cortex-a8 -mfpu= неон -mthumb -mfloat-abi=softfp --sysroot=/ -O2 -O3 -Wall -W -fPIC -I. -I/home/amin/EMA/qt-where-opensource-src-5.8.0/qtbase/mkspecs/devices/linux-beagleboard-g++ -o verifyyspec.o verifyyspec.cpp arm-none-linux-gnueabi-g++ -mfloat-abi=softfp --sysroot=/ -Wl,-O1 -o verifyyspec verifyyspec.o -lrt -lpthread -ldl /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/glin/uxn -gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти crt1.o: нет такого файла или каталога /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не может найти crti.o: нет такого файла или каталога /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm -none-linux-gnueabi / bin / ld: не удается найти -lrt /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти -lpthread /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: невозможно find -ldl /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти -lstdC++ /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти -lm /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти -lgcc_s /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти -lc /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: невозможно ind -lgcc_s /home/amin/CodeSourcery/Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/bin/../lib/gcc/arm-none-linux-gnueabi/4.6.1/../../../../arm-none-linux-gnueabi/bin/ld: не удается найти crtn.o: такой файл или каталог не существует collect2: ld вернул 1 состояние завершения Makefile:64: ошибка рецепта для объекта "verifyyspec" make: *** [verifyyspec] Ошибка 1
2 ответа
Ваш журнал компиляции показывает, что он пытался использовать gold
компоновщик, однако команда не найдена. Более поздняя ошибка отсутствующих библиотек и объектных файлов, вероятно, связана с этой ошибкой.
gold является относительно недавним дополнением к цепочке инструментов GNU, и вы используете довольно старую версию (gcc 4.6.1), поэтому я бы предложил обновить вашу цепочку инструментов до самой последней, если у вас нет действительно веских причин не делать этого.
Qt довольно самоуверен, когда дело доходит до выбора набора инструментов. Есть список поддерживаемых компиляторов, который не включает что-то, основанное на GCC 4.6. Учитывая, что Qt требует поддержки C++11 в наши дни, ваши шансы заставить это работать с древним компилятором сильно ограничены.
Linaro предоставляет хорошие наборы инструментов для скачивания. Есть ли причина, почему вы не используете один? В качестве альтернативы вам также, вероятно, понадобится дополнительное ПО на BBB, так что скорее всего вы используете дистрибутив, такой как Debian, или инструмент для сборки, такой как Buildroot или Yocto, для создания ваших изображений. BeagleBone Black является основной платформой, поддержка которой обеспечивается практически всем, что предназначено для встраиваемых платформ.
Версия TL;DR: обновите ваш инструментарий или вашу среду сборки. Qt не простая библиотека.