Автор Тема: Сборка Qt с помощью кросс-компиляции  (Прочитано 552 раз)

Оффлайн Dmitry

Сборка Qt с помощью кросс-компиляции
« : Ноябрь 14, 2019, 03:13:11 pm »
Всем привет!

Пытаюсь собрать Qt 5.13.2  помощью кросс компиляции. За основу взял эту статью: https://visuale.ru/blog/krosskompilyatsiya-qt-5-10-dlya-raspberry-pi3

На плату накатил Armbian Buster, взятый тут: https://www.armbian.com/orange-pi-zero/

g++ -v
Говорит gcc version 8.3.0 (Debian 8.3.0-6)

Скачал Linaro toolchain gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-a/downloads

Синхронизовал sysroot с апельсинкой, как написано в статье.

Скачал исходники Qt

Пытаюсь его сконфигурировать.
И тут вопрос: я для конфигурации использую следующую команду:
  ./configure -skip wayland -skip script -no-xcb -no-pch -no-use-gold-linker -no-opengl -nomake tests -nomake examples -reduce-exports -release -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot ~/orange_zero/sysroot -opensource -confirm-license -make libs -prefix ~/orange_zero/qt5.13.2orange -extprefix ~/orange_zero/qt5.13.2orange -hostprefix ~/orange_zero/qt5.13.2 -v

Но в итоге на выходе имею: ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.
В качестве -device я указываю linux-rasp-pi-g++ (где-то подсмотрел). Но сдается мне, что это не правильно. В исходниках Qt, в папке qtbase/mkspecs/devices нет отдельной папки с конфигурацией на Orange.

Что нужно указать в параметрах конфигурации чтобы собрать Qt под Orange Pi Zero?


Полный вывод ошибки:
This is the Qt Open Source Edition.

You have already accepted the terms of the Open Source license.

Running configuration tests...

+ /home/dmitry/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -dumpmachine
> arm-linux-gnueabihf
Checking for valid makespec...
+ cd /home/dmitry/orange_zero/Qt5.13.2-src/config.tests/verifyspec && /home/dmitry/orange_zero/Qt5.13.2-src/qtbase/bin/qmake "CONFIG -= qt debug_and_release app_bundle lib_bundle" "CONFIG += shared warn_off console single_arch" "QMAKE_CFLAGS += --sysroot=/home/dmitry/orange_zero/sysroot" "QMAKE_CXXFLAGS += --sysroot=/home/dmitry/orange_zero/sysroot" "QMAKE_LFLAGS += --sysroot=/home/dmitry/orange_zero/sysroot" -early "CONFIG += cross_compile" /home/dmitry/orange_zero/Qt5.13.2-src/qtbase/config.tests/verifyspec
+ cd /home/dmitry/orange_zero/Qt5.13.2-src/config.tests/verifyspec && MAKEFLAGS= /usr/bin/make clean && MAKEFLAGS= /usr/bin/make
> rm -f verifyspec.o
> rm -f *~ core *.core
> /home/dmitry/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -c -pipe -marm -mfpu=vfp -mtune=arm1176jzf-s -march=armv6zk -mabi=aapcs-linux -mfloat-abi=hard --sysroot=/home/dmitry/orange_zero/sysroot -O2 -w -fPIC  -I/home/dmitry/orange_zero/Qt5.13.2-src/qtbase/config.tests/verifyspec -I. -I/home/dmitry/orange_zero/Qt5.13.2-src/qtbase/mkspecs/devices/linux-rasp-pi-g++ -o verifyspec.o /home/dmitry/orange_zero/Qt5.13.2-src/qtbase/config.tests/verifyspec/verifyspec.cpp
> /home/dmitry/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -mfloat-abi=hard --sysroot=/home/dmitry/orange_zero/sysroot -Wl,-O1 -Wl,-rpath-link,/home/dmitry/orange_zero/sysroot/opt/vc/lib -Wl,-rpath-link,/home/dmitry/orange_zero/sysroot/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/home/dmitry/orange_zero/sysroot/lib/arm-linux-gnueabihf -o verifyspec verifyspec.o     
> /home/dmitry/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: cannot find crt1.o: No such file or directory
> /home/dmitry/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: cannot find crti.o: No such file or directory
> /home/dmitry/orange_zero/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/8.3.0/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lm
> collect2: error: ld returned 1 exit status
> Makefile:68: recipe for target 'verifyspec' failed
> make: *** [verifyspec] Error 1
Note: Also available for Linux: linux-clang linux-icc

ERROR: Cannot compile a minimal program. The toolchain or QMakeSpec is broken.


« Последнее редактирование: Ноябрь 14, 2019, 03:26:51 pm от Dmitry »

Оффлайн DungeonLords

Re: Сборка Qt с помощью кросс-компиляции
« Ответ #1 : Май 18, 2020, 01:48:07 am »
В настоящее время широкое распространения получили одноплатники OPI, такие как OPI PC PLUS. Было бы здорово получить инструкцию о кросскомпиляции на OPI. Я попытался следовать этому роководству для armbian на OPI PC PLUS, но не смог решить проблемы с графикой. При этом kmscube запускается, кубик вращается. Конфигурировал
./configure -skip wayland -skip script -skip webengine -no-pch -no-kms -no-xcb -no-use-gold-linker -nomake tests -nomake examples -reduce-exports -eglfs -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/home/andrei/Qt5Sources/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -opensource -confirm-license
Очевидно у меня компилятор gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf Потому что я с ноута на Ubuntu 19. Получил:
EGL .................................... no
OpenVG ................................. no
OpenGL: Desktop OpenGL ....................... no
OpenGL ES 2.0 ........................ no
OpenGL ES 3.0 ........................ no
OpenGL ES 3.1 ........................ no
OpenGL ES 3.2 ........................ no
Vulkan ................................. no
Session Management ..................... yes
Телодвижения делал такие https://visuale.ru/blog/krosskompilyatsiya-qt-5-10-dlya-raspberry-pi3 Шутки ради накатил на OPI PC PLUS ПО Qt Creator из репозитория, создал, собрал и запустил Hello World успешно на самом SBC.
« Последнее редактирование: Май 18, 2020, 01:49:42 am от DungeonLords »