我想为armhf编译Qt6.6。我用 Qt5.12.1 版本进行了编译。我正在用这个。但我需要与 Qt6.6 兼容的更新的库(例如 QCanDbcParser)。
我按照本指南为 beagleboneblack 编译 Qt5。
https://github.com/K3tan/BBB_QT5_guide
我在Qt论坛问过,但没有人回答。
https://forum.qt.io/topic/153851/qt6-beaglebone-black-armhf-build-issue/3
我下载了 gcc-linaro 进行交叉编译和 sysroot。我编辑了我的参数,例如 -hostprefix(因为 -hostprefix 未使用) 这是带有参数的 mt configure 命令。我只是想这个版本没有 GUI。
./configure -platform linux-g++ -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/home/arge13-ubuntu/Downloads/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /home/arge13-ubuntu/Downloads/sysroot-glibc-linaro-2.25-2019.12-arm-linux-gnueabihf -opensource -confirm-license -release -make libs -prefix /usr/local/qt6bbb -skip multimedia -skip qtlocation -skip qtdatavis3d -skip qtcharts -skip qtwebengine -no-kms -no-eglfs -no-xcb -no-accessibility -no-widgets -no-egl -no-openvg -no-qml-debug -no-opengl
我成功的构建config.summary是这样的:
Building on: linux-g++ (x86_64, CPU features: mmx sse sse2) Building for: devices/linux-beagleboard-g++ (arm, CPU features: neon) Target compiler: gcc 9.4.0 Configuration: cross_compile use_gold_linker compile_examples enable_new_dtags largefile neon precompile_header shared rpath release c++11 c++14 c++1z concurrent dbus no-pkg-config reduce_exports stl no-widgets
有我的主机和目标计算机的信息。
但是在 qt6 构建中我刚刚得到这个:
Building for: devices/linux-beagleboard-g++ (arm, CPU features: ) Compiler: gcc 7.5.0
当我想运行 make 命令时,我收到此错误:
Building CXX object qtbase/src/tools/syncqt/CMakeFiles/syncqt.dir/main.cpp.o /home/arge13-ubuntu/Downloads/qt-everywhere-src-6.6.1/qtbase/src/tools/syncqt/main.cpp:24:10: fatal error: filesystem: No such file or directory #include <filesystem> ^~~~~~~~~~~~ compilation terminated. make[2]: *** [qtbase/src/tools/syncqt/CMakeFiles/syncqt.dir/build.make:63: qtbase/src/tools/syncqt/CMakeFiles/syncqt.dir/main.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:14400: qtbase/src/tools/syncqt/CMakeFiles/syncqt.dir/all] Error 2 make: *** [Makefile:141: all] Error 2
对于 BBB 和较旧的内核,例如 4.4.x,我不相信您将拥有 GCC、glibc 和/或 make、cmake 和/或这个缺失的 .o 文件的最新版本。
请记住,每个新的 Qt 版本都会有版本更改。我记得在 Qt4 和 Qt5 上使用了很多 Python3 脚本,但 Qt5 上可用的是 Qt4 中不再起作用的更新。
我看到这么说...
我建议使用最新版本,您可以通过
apt
安装 Qt4/5/6 或任何您想要的版本。通常,beagleboard.org 提供他们通过外包或内部生产的硬件的图像。
到了
recent release
,我正在讨论他们的图像,这些图像可以在forum.beagleboard.org 和/或beagleboard.org 上找到。如果没有更新当前支持的映像和内核,很难说您当前的确切问题是什么。
现在,我不知道您是否正在使用 Qt(N) 之外的外设,但情况一直在变化。他们更新的图像和内核运行良好。我个人最近没有使用过Qt6。我多次使用PyQt4、PyQt5和Qt4/5,不得不更新到最新的SDK。这是一个常态。如果您要进行交叉编译,请使用您打算使用的机器。我什至不认为 Qt6 有 armhf 的 32 位版本。