当前位置: 首页 > 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.lryc.cn/news/620292.html

相关文章:

  • 21. 抽象类和接口的区别
  • 【单板硬件】器件采购:BOM表
  • 大数据可视化设计 | 智能家居 UI 设计:从落地方法到案例拆解
  • 【从网络基础到实战】理解TCP/IP协议体系的核心要点(包含ARP协议等其他协议介绍)
  • 词向量转化
  • nginx知识点
  • C语言相关简单数据结构:顺序表
  • 使用 Simple Floating Menu 插件轻松实现浮动联系表单
  • Linux学习-UI技术
  • phpstudy搭建pikachu
  • 《探索C++ set与multiset容器:深入有序唯一性集合的实现与应用》
  • java中的各种引用
  • C++算法·递推递归
  • 从感知到执行:人形机器人低延迟视频传输与多模态同步方案解析
  • 飞算AI:企业智能化转型的新引擎——零代码重塑生产力
  • 音频重采样使用RandomOverSampler 还是 SMOTE
  • Python 基础语法(一)
  • Java研学-RabbitMQ(七)
  • 云计算-实战 OpenStack 私有云运维:服务部署、安全加固、性能优化、从服务部署到性能调优(含数据库、内核、组件优化)全流程
  • 《深入解析C++中的Map容器:键值对存储的终极指南》
  • FPGA+护理:跨学科发展的探索(四)
  • Java 大视界 -- 基于 Java 的大数据可视化在能源互联网全景展示与能源调度决策支持中的应用
  • Ubuntu24.04桌面版安装wps
  • 20250813比赛总结
  • Centos 用户管理
  • 在CentOS 7上配置Android USB网络共享方式的方法
  • 「数据获取」《中国海洋生态环境状况公报》(2001-2023年)(获取方式看绑定的资源)
  • 【linux】--U盘挂载
  • 更友好的并发库conc介绍
  • java集合之单列集合