需求说明:在CentOS环境中搭建 银河麒麟交叉编译环境+qt5.9.5静态编译库文件
1.准备交叉编译器,我的版本是gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu.tar.gz;
将源码拷贝到/opt目录下解压;
在/etc/profile中加入路径:export PATH=$PATH:/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/bin
然后使用reboot重启;
使用aarch64-linux-gnu-g++ -v 查看交叉编译器版本;
版本与自己设置的一致即可;
2.下载Qt5.9.5源码,可在官网进行下载;将Qt源码拷贝到/opt/Qt5/目录中(没有目录则可以使用mkdir 进行新建)进行解压,与此同时在与源码文件夹同级目录中建立一个Qt5-9-5-static目录,用于存放编译完成的文件;
3.执行./configure 命令;命令如下:
CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ./configure -static -release -nomake examples -qt-sqlite -qt-xcb -system-freetype -fontconfig -qt-zlib -qt-libpng -qt-libjpeg -no-qml-debug -no-opengl -no-angle -nomake tests -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -xplatform linux-aarch64-gnu-g++ -prefix /opt/Qt/qt5.9.5-static
复制命令时 请不要将换行符复制进去;
执行时,可能会遇到的问题:
ERROR: Feature 'xcb' was enabled, but the pre-condition 'libs.xcb' failed.
ERROR: Feature 'system-freetype' was enabled, but the pre-condition 'features.freetype && libs.freetype' failed.
ERROR: Feature 'fontconfig' was enabled, but the pre-condition '!config.win32 && !config.darwin && features.system-freetype && libs.fontconfig' failed.
一般情况下,可能会报这样3个问题,其中system-freetype 与fontconfig 交叉编译器中应该已经存在(也有可能我下载的编译器中是别人编译好的);可以进行查看;
xcb 错误,则需要下载xcb源码进行编译;
下载地址:https://xcb.freedesktop.org/dist/ 下载xcb源码
https://xorg.freedesktop.org/archive/individual/proto/ 下载xproto
https://xorg.freedesktop.org/archive/individual/lib/ 下载libXau
编译xcb时 需要提前编译:xcb-proto ,libXau,xproto三个依赖库;
下载完成后,分别解压编译;
编译xcb-photo 命令:CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ./configure --prefix=/opt/libxcb/xcb-proto-static --host=aarch64-linux-gnu
然后将生产的文件拷入/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu下的对应目录中,通过命令:export PKG_CONFIG_PATH=/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu/lib/pkgconfig设置为临时环境变量
编译xproto命令:CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ./configure --enable-static --prefix=/opt/libxcb/xproto-static --host=aarch64-linux-gnu
然后将生产的文件拷入/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu下的对应目录中,
编译libXau命令:CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ ./configure --enable-static --prefix=/opt/libxcb/libXau-static --host=aarch64-linux-gnu
然后将生产的文件拷入/opt/gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu下的对应目录中,
然后重新进入解压后的Qt源码目录中,重新执行上诉configure操作,如果还有问题 则根据遇到的问题,下载对应源码进行相应编译;
如果出现如下界面:
则表示configure操作成功。
执行gmake -j4 ;这个操作耗时比较久,(根据电脑性能40分钟至2个多小时之间);
执行gmake install ;这个操作10分钟应该可以完成;此时在/opt/Qt/qt5.9.5-static 目录下
出现这些文件应该就编译成功;
进一步查看,cd bin 目录中,查看是否有qmake文件;自此qt5.9.5 静态库编译成功;
4.测试交叉编译Qt静态库,
下载qtcreator ,然后配置构建环境;qmake路径选择为静态编译出的路径;gcc/g++ 路径选择为交叉编译器下的gcc与g++;
gcc路径:
g++路径:
调试器路径:
qmake路径:
构建环境总览:
使用qtcreator建立一个最简单的项目,运行生产可执行文件;
使用file 命令查看可执行文件的格式;
可以看出生成的可执行文件时ARM版本的;将这个文件拷贝到对应环境中便可运行;注意拷贝一个新环境的时,需要对可执行文件,给与可执行权限。