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

飞凌OK3568开发板QT应用程序编译流程

飞凌OK3568开发板QT应用程序编译流程

开发环境:ubuntu20.04(主机)、飞凌OK3568开发板
一般在linux系统下开发用于ARM开发板的QT应用程序时,直接在主机上开发然后进行交叉编译即可,但有时候ARM开发板的厂家提供的SDK中可能没有适配QT相关的环境,此时需要借助ARM开发板的根文件系统来进行编译,或者需要将QT程序导入到开发板上进行编译。
一、在根文件系统中安装QT编译时需要的相关库文件
1、首先在VM虚拟机中安装qemu相关环境
sudo apt-get install qemu-user-static
2、将Ubuntu20.04源码目录下OK3568-linux-source/ubuntu-20.04-release/ubuntu.img文件扩容后挂载
sudo fsck.ext3 -f ubuntu.img //扩容到8G
sudo resize2fs ubuntu.img  2000000  
3、创建target挂载目录,将扩容后的ubuntu.img文件挂载到target目录下
mkdir target
sudo mount ubuntu.img target/
cd target
4、拷贝主机端的配置,因为后续安装软件需要使用网络
sudo cp /usr/bin/qemu-arm-static usr/bin/
sudo cp -b /etc/resolv.conf  etc/resolv.conf
sudo vim etc/apt/source.list
5、添加以下内容:
deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
6、创建挂载脚本
cd ..
touch mount.sh
vim mount.sh
7、脚本中添加以下内容:
#!/bin/bash
​
function mnt() {
echo "MOUNTING"
sudo mount -t proc /proc ${2}proc
sudo mount -t sysfs /sys ${2}sys
sudo mount -o bind /dev ${2}dev
​
sudo chroot ${2}
}
​
function umnt() {
echo "UNMOUNTING"
sudo umount ${2}proc
sudo umount ${2}sys
sudo umount ${2}dev
​
}
​
​
if [ "$1" == "-m" ] && [ -n "$2" ] ;
then
mnt $1 $2
elif [ "$1" == "-u" ] && [ -n "$2" ];
then
umnt $1 $2
else
echo ""
echo "Either 1'st, 2'nd or both parameters were missing"
echo ""
echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"
echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
echo ""
echo "For example: ch-mount -m /media/sdcard/"
echo ""
echo 1st parameter : ${1}
echo 2nd parameter : ${2}
fi
8、保存退出,添加可执行权限
sudo chmod +x mount.sh
9、使用脚本挂载
sudo ./mount.sh -m target/
到此,成功将ubuntu.img挂载到qemu上,虚拟机操作用户应该变为root@ubuntu:/# ,此时执行apt安装软件等操作会保留在ubuntu.img文件中
10、修改根文件系统镜像、安装QT串口相关库,有的库根文件系统镜像中已经安装过了,这里只需要安装串口库
sudo apt-get install libqt5serialport5-dev libqt5serialport5
11、退出
exit
12、取消挂载
sudo ./mount.sh -u target/
sudo umount target/
安装完QT相关的库文件后就可以重新挂载根文件系统,然后进行编译QT应用程序。
二、编译QT应用程序
13、下载安装相关工具
sudo apt update && sudo apt install qemu-user-static
14、挂载Ubuntu20.04源码目录下OK3568-linux-source/ubuntu-20.04-release/ubuntu.img文件
cd ~/3568/OK3568-linux-source/ubuntu-20.04-release
mkdir ubuntufs
sudo mount ubuntu.img ubuntufs
15、拷贝QT应用程序的源码到ubuntufs中
sudo cp -r  QT应用程序源码路径  ubuntufs/home/forlinx
16、进入ubuntu虚拟环境
cd ubuntufs/
sudo mount -t proc /proc proc/
sudo mount -t sysfs /sys  sys/
sudo mount -o bind /dev dev/
sudo mount -o bind /dev/pts dev/pts
sudo mount -o bind /run run/
sudo chroot . /usr/bin/qemu-aarch64-static /bin/bash
此时,虚拟机操作用户应该变为root@ubuntu:/#
17、编译QT应用程序
cd /home/forlinx
cd 拷贝过来的QT应用程序源码所在目录
qmake
make
经过以上流程,正常情况下QT应用程序已经被编译出来了。
18、退出
exit
19、将编译出的ARM架构可执行文件导入到开发板运行即可。
20、取消挂载
cd ..
sudo umount ubuntufs/proc
sudo umount ubuntufs/sys
sudo umount ubuntufs/dev/pts
sudo umount ubuntufs/dev
sudo umount ubuntufs/run
sudo umount ubuntufs
http://www.dtcms.com/a/329078.html

相关文章:

  • Nginx 超详细详解和部署实例
  • 大致计算服务器磁盘使用情况脚本
  • 从零到一:TCP 回声服务器与客户端的完整实现与原理详解
  • pycharm配置连接服务器
  • 解析Vue3中集成WPS Web Office SDK的最佳实践
  • 物理服务器和虚拟机在性能上的不同
  • 【opencv-Python学习笔记(3):色彩空间类型及其转换】
  • 【Abp.VNext】Abp.Vnext框架模块学习
  • 工业元宇宙:迈向星辰大海的“玄奘之路”
  • TCP客户端Linux网络编程设计详解
  • docker+nginx+keepalived+openappsec+web ui+crowdsec部署安全代理
  • IDEA创建一个VUE项目
  • SVN提交服务器拒绝访问的问题
  • 服务器硬件电路设计之 I2C 问答(五):I2C 总线数据传输方向如何确定、信号线上的串联电阻有什么作用?
  • 从零开始搭建私服务器
  • opencv:直方图
  • 【AI论文】GLM-4.5:具备智能体特性、推理能力与编码能力的(ARC)基础模型
  • Visual Studio Code 跨平台快捷键指南:Windows 与 macOS 全面对比
  • 第十三节:后期处理:效果增强
  • 开发避坑指南(24):RocketMQ磁盘空间告急异常处理,CODE 14 “service not available“解决方案
  • 2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
  • python基于Hadoop的超市数据分析系统
  • 高防CDN和高防IP的各自优势
  • Sklearn 机器学习 异常值检测 孤立深林
  • 《设计模式之禅》笔记摘录 - 15.观察者模式
  • 【完整源码+数据集+部署教程】军事伪装目标分割系统源码和数据集:改进yolo11-EMSC
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • Four.Meme 重大更新:Bonding Curve Cap 从 24 BNB 降至 18 BNB,这意味着什么?
  • 浏览器面试题及详细答案 88道(23-33)
  • 【密码学实战】国密SM2算法介绍及加解密/签名代码实现示例