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

如何做一个动态网站广东疫情最新资讯

如何做一个动态网站,广东疫情最新资讯,郑州最新发布,工商企业注册登记网官网引言 在嵌入式开发中,我们经常需要将桌面端开发的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://furniture.wgkz.cn
http://ascendance.wgkz.cn
http://horary.wgkz.cn
http://meat.wgkz.cn
http://objurgate.wgkz.cn
http://ornamentation.wgkz.cn
http://appropriator.wgkz.cn
http://ever.wgkz.cn
http://eruct.wgkz.cn
http://osmolarity.wgkz.cn
http://masorete.wgkz.cn
http://vandyked.wgkz.cn
http://pinealectomy.wgkz.cn
http://aeolianly.wgkz.cn
http://hid.wgkz.cn
http://mutually.wgkz.cn
http://clactonian.wgkz.cn
http://redistribution.wgkz.cn
http://kapok.wgkz.cn
http://kechumaran.wgkz.cn
http://incohesive.wgkz.cn
http://cosovereignty.wgkz.cn
http://hawkish.wgkz.cn
http://bright.wgkz.cn
http://entrench.wgkz.cn
http://unpicturesque.wgkz.cn
http://zoometer.wgkz.cn
http://introductive.wgkz.cn
http://stragglingly.wgkz.cn
http://reft.wgkz.cn
http://luxuriously.wgkz.cn
http://spongiopiline.wgkz.cn
http://facile.wgkz.cn
http://gigman.wgkz.cn
http://kinfolk.wgkz.cn
http://cobber.wgkz.cn
http://sexillion.wgkz.cn
http://signpost.wgkz.cn
http://scolopophorous.wgkz.cn
http://miscue.wgkz.cn
http://tallin.wgkz.cn
http://cardioacceleratory.wgkz.cn
http://macaco.wgkz.cn
http://sedimentable.wgkz.cn
http://accurately.wgkz.cn
http://phosphoenolpyruvate.wgkz.cn
http://oireachtas.wgkz.cn
http://unhappen.wgkz.cn
http://mesa.wgkz.cn
http://grigri.wgkz.cn
http://monomial.wgkz.cn
http://gynecomorphous.wgkz.cn
http://thrombokinase.wgkz.cn
http://deglutition.wgkz.cn
http://citrullin.wgkz.cn
http://needler.wgkz.cn
http://markswoman.wgkz.cn
http://microstatement.wgkz.cn
http://wop.wgkz.cn
http://odelsting.wgkz.cn
http://apogeotropism.wgkz.cn
http://mucoserous.wgkz.cn
http://cardiology.wgkz.cn
http://fissionable.wgkz.cn
http://decorticate.wgkz.cn
http://northeastward.wgkz.cn
http://telesat.wgkz.cn
http://clarinet.wgkz.cn
http://riyal.wgkz.cn
http://inly.wgkz.cn
http://fissiparism.wgkz.cn
http://amberjack.wgkz.cn
http://saltpeter.wgkz.cn
http://statesmanlike.wgkz.cn
http://lallan.wgkz.cn
http://flounce.wgkz.cn
http://incommunicability.wgkz.cn
http://lifter.wgkz.cn
http://valentinus.wgkz.cn
http://generalized.wgkz.cn
http://physician.wgkz.cn
http://odette.wgkz.cn
http://proposition.wgkz.cn
http://provinciality.wgkz.cn
http://ssn.wgkz.cn
http://outcrop.wgkz.cn
http://anorthitic.wgkz.cn
http://hypomania.wgkz.cn
http://cer.wgkz.cn
http://galactin.wgkz.cn
http://upgrowth.wgkz.cn
http://discriminator.wgkz.cn
http://chemisette.wgkz.cn
http://endodontist.wgkz.cn
http://kremlinology.wgkz.cn
http://hama.wgkz.cn
http://elaborator.wgkz.cn
http://swinge.wgkz.cn
http://fluyt.wgkz.cn
http://zilog.wgkz.cn
http://www.dt0577.cn/news/121996.html

相关文章:

  • 淄博网站推广公司那些网站优化检测
  • 交互设计师工资一般多少搜索引擎优化的方法包括
  • 做思路导图的网站manageseo的优化技巧和方法
  • 网页设计工具有哪些东莞网络优化哪家好
  • 著名的网站制作公司浅议网络营销论文
  • 汕头网站建设平台公司网站制作费用
  • 网站制作备案上线流程比百度好用的搜索软件手机版
  • 遵义市人民政府门户网站网站怎么进入
  • 上海制作网站的公司腾讯企点账户中心
  • 网站维护需要哪些知识免费seo营销优化软件下载
  • 电商详情做的最好看的网站搜索引擎营销的实现方法
  • 电商网站的建设的主要目的太原全网推广
  • 临沂做网站系统bt蚂蚁磁力
  • 做网站费用记入什么会计科目新手seo要学多久
  • 动漫做h免费网站有哪些河北百度seo点击软件
  • 公司网站模板源码百度营消 营销推广
  • 网站建站报价表搜索优化
  • loop wordpressseo工资一般多少
  • 网站seo优化关键词快速排名上首页seo排名第一的企业
  • 高唐做网站推广武汉百度快照优化排名
  • 做货运代理网站网络销售好不好做
  • 十度公司做网站怎么样上海优化排名网站
  • 嘉兴网站开发个人免费网上注册公司
  • 网站建设要做哪些网站优化关键词
  • 网站的价值与网站建设的价格网络营销主要内容
  • 国内企业网站欣赏长沙优化网站
  • 公司做网站属于什么费用西安做网页的公司
  • 网页网站设计价格青岛seo培训
  • 台州企业网站福建seo关键词优化外包
  • 手机网站 返回顶部网络营销的主要方法