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

飞凌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.xdnf.cn/news/17874.html

相关文章:

  • HTML5 Canvas实现数组时钟代码,适用于wordpress侧边栏显示
  • C# 反射和特性(元数据和反射)
  • pycharm配置连接服务器
  • 服务器查看 GPU 占用情况的方法
  • 室外 3DVG 基准
  • C# 多线程:并发编程的原理与实践
  • 对线面试官之幂等和去重
  • Python图像处理基础(十三)
  • Ubuntu 20.04 虚拟机安装完整教程:从 VMware 到 VMware Tools
  • 【前端八股文面试题】【JavaScript篇8】作用域链介绍?
  • VMD+皮尔逊+降噪+重构(送报告+PPT)Matlab程序
  • 自动曝光算法参考
  • Datawhale AI夏令营 「2025全球AI攻防挑战赛-赛道一:图片全要素交互认证-生成赛」的赛事项目实践
  • python自学笔记7 可视化初步
  • 使用 Simple Floating Menu 插件轻松实现浮动联系表单
  • GPU 选型指南(一):AI 训练巅峰之选 H100、H200与MI300X/MI325X深度对比
  • 【C++ STL】list详解和模拟
  • 如何用外部电脑访问本地网页?
  • 蒙以CourseMaker里面的录屏功能真的是完全免费的吗?
  • RC4算法实现
  • C# xml UI格式化字符串
  • RxJava 在 Android 中的深入解析:使用、原理与最佳实践
  • 一个接口多个实现类,如何动态调用
  • 【SpringBoot】统一功能处理
  • PCIe Base Specification解析(十)
  • GNN: 配送路径最短 GNN 类型方案对比
  • 内容索引之word转md工具 - markitdown
  • Java Record 类 — 简化不可变对象的写法
  • JavaWeb(05)
  • transforms的使用 小土堆pytorch记录