• 1347阅读
  • 2回复

[提问]qt6.7源码无法交叉编译到arm平台,指定-xplatform linux-aarch64-gnu-g++无效 [复制链接]

上一主题 下一主题
离线lankii
 

只看楼主 倒序阅读 楼主  发表于: 2024-09-20
中控版arm的,带的socketcan,基于lubuntu系统,系统的qt库是qt5.12.8的,所以qt5编译的新版库有冲突,造成系统奔溃,用5.12.8源码编译的没问题,但是这个sockecan 居然找不到插件,用qt6.7在线安装测试则正常,所以应该修复了,但是中控开发qt不方便,还是要x86_64下虚拟机交叉编译才好用

用 ./configure  -xplatform linux-aarch64-gnu-g++ -prefix  /xxx/armqt67 -opensource -confirm-license -release -shared -optimized-qmake  -qt-libjpeg -qt-libpng -qt-zlib -nomake examples -nomake tests  -no-opengl   -c++std c++20 -make libs -widgets  -dbus-runtime -qt-zlib -qt-freetype -qt-harfbuzz -strip  -skip qtgraphs -skip qtwebengine -skip qt3d -skip qtquick3d  -skip qtdoc -skip qtquick3dphysics -skip qtopcua

能完成源码编译,但是交叉编译生成的lib库全部是x86_64的,怀疑cmake没用指定的编译器,用命令指定,这个cmake build就一大堆莫名其妙的错误,头疼  cmake -DCMAKE_C_COMPILER=/lxxx/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc -DCMAKE_CXX_COMPILER=/XXX/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++ -B build -S .

大家有没有遇到过这类问题,交叉编译指令感觉没有正常执行
本帖提到的人: @那司机开发
离线lankii

只看该作者 1楼 发表于: 2024-09-20
生成的qt6.7库 为x86_64 libQt6WlShellIntegration.prl:                    ASCII text
libQt6WlShellIntegration.so:                     symbolic link to libQt6WlShellIntegration.so.6
libQt6WlShellIntegration.so.6:                   symbolic link to libQt6WlShellIntegration.so.6.7.2
libQt6WlShellIntegration.so.6.7.2:               ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=8f72af03fdfebbdb848f41c939d3e19898d12c4f, not stripped
libQt6XcbQpa.prl:                                ASCII text, with very long lines
libQt6XcbQpa.so:                                 symbolic link to libQt6XcbQpa.so.6
libQt6XcbQpa.so.6:                               symbolic link to libQt6XcbQpa.so.6.7.2
libQt6XcbQpa.so.6.7.2:                           ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=00a8abe911a532a331438e4570b3c8aad96e92fd, not stripped


正常make编译的qt5为 arm:

libQt5WebView.so.5.12.8:           ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=94a56e1257cb7e4e8439bc9f6cd3615aec277c57, stripped
libQt5Widgets.la:                  libtool library file, ASCII text
libQt5Widgets.prl:                 ASCII text, with very long lines
libQt5Widgets.so:                  symbolic link to libQt5Widgets.so.5.12.8
libQt5Widgets.so.5:                symbolic link to libQt5Widgets.so.5.12.8
libQt5Widgets.so.5.12:             symbolic link to libQt5Widgets.so.5.12.8
libQt5Widgets.so.5.12.8:           ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynami
离线lankii

只看该作者 2楼 发表于: 2024-09-23
终于搞出来了,qt6.7编译真是麻烦,编译好后,qt5写的很多东西都不支持,于是重新下载qtseriabus的库编译,交叉编译用的qt5.12.8, 编译器最新aarch13,(建议不要用最新的,否则arm这边系统会报缺少GLIBCXX_3.4.29,这玩意和系统核心,一个更新不好,你的arm linux就会奔溃,我使用source.list添加高版本,在同个apt install libstdc++.so.6 自动更新完成,手动复制黏贴库,有可能系统奔溃,任何linux命令无法使用) 编译成功后复制到arm里面,发现还是不行,于是相qt67下为什么是正常,于是file ,ldd 等文件相关链接库,发现一个可疑文件夹qt5 ,于是尝试把编译的库放入 /lib/aarch64-linux-gnu/qt5/plugins ,终于出现x86_64下的 :
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
arm_release_ver of this libmali is 'g2p0-01eac0', rk_so_ver is '4'.
"passthrucan"
"peakcan"
"socketcan"
"tinycan"
"virtualcan"
Available CAN plugins: ("passthrucan", "peakcan", "socketcan", "tinycan", "virtualcan")
4条评分好评度+1贡献值+1金钱+10威望+1
20091001753 好评度 +1 辛苦了 2024-09-24
20091001753 贡献值 +1 辛苦了 2024-09-24
20091001753 威望 +1 辛苦了 2024-09-24
20091001753 金钱 +10 辛苦了 2024-09-24
快速回复
限100 字节
 
上一个 下一个