QT配置arm-linux-g++交叉编译器

QT配置arm-linux-g++交叉编译器

需要准备的材料

ubuntu16.4版本虚拟机
qt5.12.9版本 ,qt-everywhere-src-5.12.9(版本要一致,没试过版本不同是否可行)
(qt5.15.2 qt5.14.2都装了下,按照以下流程都是完全没错误)
arm-linux-g++4.8.3版本

由于最近接手公司离职员工的代码,通常我个人都是直接写Makefile来完成,对方用的Qt配合交叉编译器使用的,由于代码太乱,还有一堆没用的源码,目录层次也太乱了,索性就按照人家的玩吧,头次琢磨这个,从网上搜的感觉像是一些培训机构里的学生把培训机构教的很固有的东西直接搬上来当教材,遇到各种问题找不到解决办法,到处翻文档总结了下。

在qt-everywhere-src-5.12.9目录下创建了个build(看个人习惯吧,也可以直接把脚本写在当前的目录),在这个目录下写了个脚本,configure.sh ,用来执行configure配置信息的。

这个配置相当关键了,之前弄了好几天,怀疑主要错误就是在这个配置不当上了

#! /bin/sh

../configure \
-prefix /home/wht/qt5.15.2-arm \
-opensource \
-confirm-license \
-release \
-xplatform linux-arm-guneabi-g++ \
-make libs \
-nomake examples \
-nomake tools \
-nomake tests \
-no-openssl	\
-no-opengl	\
-skip qt3d	\
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcharts	\
-skip qtconnectivity	\
-skip qtdatavis3d	\
-skip qtdeclarative \
-skip qtdoc	\
-skip qtgamepad	\
-skip qtimageformats	\
-skip qtlocation	\
-skip qtmacextras	\
-skip qtmultimedia	\
-skip qtnetworkauth	\
-skip qtpurchasing	\
-skip qtquickcontrols	\
-skip qtquickcontrols2	\
-skip qtremoteobjects	\
-skip qtscript	\
-skip qtscxml	\
-skip qtsensors	\
-skip qtserialbus	\
-skip qtserialport	\
-skip qtspeech	\
-skip qtsvg	\
-skip qttools	\
-skip qttranslations	\
-skip qtvirtualkeyboard	\
-skip qtwayland	\
-skip qtwebchannel	\
-skip qtwebglplugin	\
-skip qtwebsockets	\
-skip qtwebview	\
-skip qtwinextras	\
-skip qtx11extras	\
-skip qtxmlpatterns

-prefix 这个配置用来生成的文件保存的目录
-xplatform 配置交叉编译器的脚本(这里要配置一个文件)
-skip 都是跳过的信息 ,如果有哪些模块是自己使用的,可以删掉

要注意了 \ 换行后面不要有空格,有些人会用windows写脚本,容易发生/bin/sh^M:这个解释器的错误,如果遇到了搜搜 sed命令来解决 换行问题。

qt-everywhere-src-5.12.9/qtbase/mkspecs/ 这个路径下配置使用的交叉编译器(关于交叉编译器配置,满网站都是,随处可以搜的到)

可以创建一个新的目录用来配置,也可以直接选个觉得自己有用的就可以了,我个人是在本来就有的一个路径linux-arm-gnueabi-g++目录下 qmake.conf 以下为内容

#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = arm-linux-gcc  
QMAKE_CXX               = arm-linux-g++
QMAKE_LINK              = arm-linux-g++
QMAKE_LINK_SHLIB        = arm-linux-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-ar cqs
QMAKE_OBJCOPY           = arm-linux-objcopy
QMAKE_NM                = arm-linux-nm -P
QMAKE_STRIP             = arm-linux-strip
load(qt_config)

回到build目录下执行configure.sh脚本,成功后显示 'run make’的字样,无ERROR,执行make(好多帖子使用多线程make,各种问题,就直接make吧,多线程也没节省多少时间)

如果使用其他的qt版本,遇到以下问题,直接删除这行,我这个是按照qt5.12.9版本的模块,有些版本可能模块不同,以下这个错误是当时用5.15.2版本后,直接把脚本放到5.12.9上使用,突然发现有些模块是没有的。
Project ERROR: -skip command line argument used with non-existent module ‘qtlottie’.

执行完毕没有错误,就是下面这提示,运行 make指令了,这个过程相当长了,我这公司的电脑运行了2-3小时才结束,结束没错误后,make install
在这里插入图片描述

由于我在执行过程中完全没遇到错误,如果看到帖子的有遇到问题的,欢迎留言。

最后一步配置QtCreator使用交叉编译器 (由于我这个当前的还没make完,所以用了之前做好了的5.15.2的做演示,添加配置都一样的)
在这里插入图片描述
浏览的是自己存放交叉编译器的地方,我这里是使用了arm-linux-g++的,两个都添加下。

看到蓝色的地方,就是之前-prefix 配置的目录,找到bin目录,里面有个qmake。
在这里插入图片描述
这里出现了个黄叹号 NO QML utility installed ,我也没整明白啥错误,也没解决,但是我试了下,可以正常编译,所以就没理这个错误。

在这里插入图片描述
把前面添加的qmake 和 交叉编译器路径信息添加后 OK

在这里插入图片描述

编译成功

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
如果你想在QT中编译针对ARM架构的应用程序,你需要先配置一个ARM交叉编译环境。下面是针对Ubuntu操作系统的教程: 1. 安装交叉编译工具链 ``` sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf ``` 2. 配置Qt交叉编译环境 在Qt Creator中,打开“工具”->“选项”->“构建和运行”->“Kits”,点击“添加”按钮来添加一个新的交叉编译环境。 在弹出的“添加设备”对话框中,选择“设备类型”为“通用Linux设备”,然后填写以下信息: - 设备名称:ARM Linux Device - 设备类型:通用Linux设备 - 设备标识符:arm-linux-gnueabihf - sysroot路径:/usr/arm-linux-gnueabihf - C编译器:/usr/bin/arm-linux-gnueabihf-gcc - C++编译器:/usr/bin/arm-linux-gnueabihf-g++ 其他选项可以按照默认值填写。点击“确定”按钮保存配置。 3. 创建一个新的Qt项目 在Qt Creator中,创建一个新的Qt项目,选择“应用程序”模板,然后在“项目配置”下选择“ARM Linux Device”作为目标设备。 在“构建环境”选项卡中,选择“自定义”构建步骤,然后在“自定义步骤”选项卡中添加以下命令: ``` make -j$(nproc) ``` 这将使用交叉编译工具链进行编译。 4. 编译和部署应用程序 点击“构建”按钮来编译应用程序。编译完成后,你可以将应用程序部署到ARM设备上进行测试。 注意:在运行应用程序之前,你需要在ARM设备上安装正确的QT库。你可以使用以下命令来安装QT库: ``` sudo apt-get install libqt5gui5 libqt5widgets5 libqt5network5 libqt5core5a libqt5dbus5 qt5-default ``` 希望这个教程对你有用!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值