CentOS7 环境下交叉编译(银河麒麟)

需求说明:在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版本的;将这个文件拷贝到对应环境中便可运行;注意拷贝一个新环境的时,需要对可执行文件,给与可执行权限。

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值