当前位置: 首页 > news >正文

徐州手机网站建设制作石家庄站到正定机场

徐州手机网站建设制作,石家庄站到正定机场,wordpress 主题 更新,为什么wordpress菜单编辑不引言 在嵌入式开发中,我们经常需要将桌面端开发的Qt程序部署到ARM架构的Linux设备。本文详细介绍如何将Windows平台开发的Qt程序,通过Linux虚拟机交叉编译为ARM架构可执行文件的完整过程 环境准备 需要特别注意的是,对于CentOS 7 默认支持…

引言

在嵌入式开发中,我们经常需要将桌面端开发的Qt程序部署到ARM架构的Linux设备。本文详细介绍如何将Windows平台开发的Qt程序,通过Linux虚拟机交叉编译为ARM架构可执行文件的完整过程

环境准备

需要特别注意的是,对于CentOS 7 默认支持的GCC版本是4.8,这个版本对于Qt 6及以上的版本不支持。此外,使用Qt 5.15.2也需要升级GCC,注意QT版本。

开发环境

  • 宿主机:Windows 11
  • 虚拟机:Ubuntu 18.04 LTS(Vmware workstation运行)
  • 目标设备:ARM64架构Linux

工具清单

工具版本要求作用
Windows的Qt Creator5.15Windows端开发IDE
Linux的Linaro工具链GCC 7.5+ARM交叉编译器
Linux的Qt源码包5.15.2交叉编译Qt库

完整操作流程

一、配置Linux交叉编译环境

1. 安装ARM64工具链

解释:这部分主要是下载ARM64的工具链,解压搭配/opt并且将这个路径添加到环境变量中,使得系统可以直接找到这个工具链。source ~/.bashrc设定环境变量的设置立刻生效。

wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz
sudo tar -xvf gcc-*.tar.xz -C /opt
echo 'export PATH=/opt/gcc-linaro-7.5.0/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
2. 验证工具链
aarch64-linux-gnu-gcc --version

二、交叉编译Qt库

1. 下载并解压Qt源码

解释:Linux版本的QT程序主要是为了适配ARM平台功能,提供跨平台API的ARM实现。

wget https://download.qt.io/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.tar.xz
tar xvf qt-everywhere-src-5.15.2.tar.xz
2. 配置编译参数

解释:这部分进入解压后Linux的QT目录。修改QT程序的配置:主要指定了安装路径,目标平台需要使用的编译器和工具链。并且禁用了opengl和xcb。

cd qt-everywhere-src-5.15.2
./configure -prefix /opt/qt5-arm -xplatform linux-aarch64-gnu-g++ -opensource -confirm-license -no-opengl -no-xcb
3. 编译安装

解释:解压后的QT还不能用,需要使用make编译成二进制的机器码,生成可执行文件、库文件。-j$(nproc)主要是自动读取处理器数量,加速编译。完成之后执行安装。

make -j$(nproc) && sudo make install

三、移植Qt项目

1. 修改.pro文件

解释:需要在我们编写的QT项目.pro文件处,添加以下代码用于指定ARM架构的交叉编译工具和Linux中QT程序的位置。

# ARM交叉编译配置
linux-aarch64-gnu-g++ {QMAKE_CC  = aarch64-linux-gnu-gccQMAKE_CXX = aarch64-linux-gnu-g++# 指定Qt库路径QT_INSTALL_PREFIX = /opt/qt5-armQMAKE_LIBDIR_QT  = $$QT_INSTALL_PREFIX/libQMAKE_INCDIR_QT  = $$QT_INSTALL_PREFIX/include# 优化参数QMAKE_CFLAGS += -march=armv8-a -mtune=cortex-a72QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
}
2. 生成Makefile
/opt/qt5-arm/bin/qmake -spec linux-aarch64-gnu-g++
3. 执行编译
make clean && make -j4

之后这样生成的文件便可以在arm架构的Linux上运行了。

四、部署

在部署到目标平台(arm架构的Linux)后执行以下命令,进行图形库安装,为程序添加执行权限以及执行程序。(注意,查看当前目录下有没有你的执行程序,程序名字也不需要加"")

# 安装运行时依赖
sudo apt install libqt5core5a libqt5gui5# 运行程序
chmod +x "your appliction"
./"your appliction" -platform linuxfb  # 无GUI设备使用帧缓冲模式

值得一提的是,如果目标设备的屏幕已经被一个程序占据导致你的程序无法显示。

可以先使用ps -elf | grep 程序名字  找到进程,再使用kill 结束进程。之后在运行进程。

一些额外说明:

1.交叉编译:与编译不同点在于,交叉编译出来的程序无法在执行编译的环境运行,比如刚刚的Linux上使用arm的交叉编译工具链编译出来的程序就无法运行,必须要在arm架构的Linux才能运行。

2.QT的跨平台是指一份源码,在编译后可以在多个平台运行。而不是一份源码在多个平台直接运行。因此Windows程序即使向同架构的Linux操作系统移植QT,也需要使用源码在Linux编译一次。

3.配置交叉工具的原因:即使是Windows上面,也有一个编译工具,默认为x86/x64的机器码。当要在不同架构运行QT的时候,需要显示指定编译工具,比如arm架构运行的交叉编译工具。

容易混淆的点:一般来说,如果在Windows编译同架构的Linux程序,同样需要交叉编译工具。但如果只是在Windows编写源码,在Linux进行编译,则不需要配置交叉编译工具。

http://www.yayakq.cn/news/242628/

相关文章:

  • 南宁建设职业技术网站2345小游戏
  • 云服务器可以做网站wordpress还可以打通小程序
  • 做外贸是什么网站广州网站推广找哪家
  • 国色天香站长工具单页面网站开发
  • 高端网站设计公司php网站开发源码
  • 聊城做网站的公司信息代运营一家店铺多少钱
  • 品牌网站推广软件做照片用的视频模板下载网站好
  • 网站开始开发阶段的主要流程seo华为网站诊断报告
  • 广州公司网站建设公司装修房子的风格设计图软件
  • 网站建设步骤的论文vip视频解析网站怎么做
  • 泗洪住房和城乡建设网站义乌哪里有学做网站的
  • 做网站需注意事项网站后台支持的字体
  • iis 一个网站多个应用程序wordpress怎么弄
  • 能够做代理的网站做网站的计划概要
  • 网站关键词优化培训为某一企业规划网络促销方案
  • 制作一个网站怎么做发光字体制作网站
  • 网站的第二域名怎么用广州seo优化
  • 网站建设服务器费用北京网站建设推广服
  • 12306网站开发过程做抽奖网站违法吗
  • 网站建设需要怎么做内蒙古兴安盟建设局网站
  • 自己搭建网站建设网站培训班
  • 关于公司申请建设门户网站的请示外链推广软件
  • 网站建设门店牌子机械外贸网站
  • 十八个免费的舆情网站北京装修公司电话大全
  • 网络营销自己做网站网络软文营销案例3篇
  • 保健品 东莞网站建设宁波网站建设模板下载免费
  • 基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)程序编程软件有哪些
  • 写作网站名字怎样查看wordpress用的什么主题
  • 网站建设基础心得株洲网站网络推广怎么做
  • 做中国旅游网站的目的与必要性动漫制作专业能报名的专插本学校