飛凌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.pswp.cn/diannao/95488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95488.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

飛算JavaAI合并項目實戰:7天完成3年遺留系統重構

引言 企業數字化進程中,遺留系統改造始終是CIO面臨的頭號難題。某電商平臺的實踐數據顯示:3年以上的Java項目平均存在47%的冗余代碼,63%的架構設計不符合當前業務需求,進行系統性重構需要投入相當于原開發量200%的資源。傳統&quo…

衛星速度增量和比沖及推力之間的關系

一、定義1.1.比沖(Isp):比沖是衡量發動機性能的重要指標,反映了單位重量推進劑在發動機中產生的沖量,單位為米/秒(m/s),代表燃料燃燒時噴流速度。這個單位與速度單位“米/秒”相同&a…

MATLAB繪制各種心形曲線

1.方程(1)心形線的經典隱函數方程為:(2)參數方程(更平滑的心形):(3)極坐標心形線(4)參數方程(3D心形)(5)隱函數3D心形2. MATLAB代碼clc;close all;clear all;warning off;%清除變量 rand(seed, 100); randn…

Django REST Framework視圖

Django REST Framework (DRF) 視圖類詳解DRF 提供了豐富的視圖類來構建 API,從基礎到高級,滿足不同復雜度的需求。以下是 DRF 的主要視圖類及其使用場景:1. 基礎視圖類APIView所有 DRF 視圖的基類,相當于 Django 的 View 類的增強…

Linux面試題及詳細答案 120道(1-15)-- 基礎概念

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs&…

week1-[分支結構]中位數

week1-[分支結構]中位數 題目描述 給定 444 個正整數 a,b,c,da,b,c,da,b,c,d,輸出它們的中位數,答案四舍五入保留 111 位小數。 輸入格式 輸入共 111 行 444 個正整數 a,b,c,da,b,c,da,b,c,d。 輸出格式 輸出共 111 行 111 個浮點數表示答案。 樣例 #1 樣…

[激光原理與應用-259]:理論 - 幾何光學 - 平面鏡的反射、平面透鏡的折射、平面鏡的反射成像、平面透鏡的成像的規律

一、平面鏡的反射規律平面鏡的反射遵循鏡面反射定律,即光線在光滑表面(反射面平整度遠大于波長)發生反射時,滿足以下條件:反射光線、入射光線與法線共面:反射光線、入射光線和法線(垂直于反射面…

相機按鍵功能解析

相機按鍵功能解析佳能相機按鍵機身背面機身正面機身頂部機身側面 佳能相機按鍵 機身背面取景器目鏡:用于拍攝時觀察相機形成的圖像。實拍顯示/視頻拍攝按鈕:按下即可開始拍攝或錄制視頻。光圈/曝光補償鍵:調整光圈大小和曝光補償,…

51單片機-驅動LED模塊教程

本章思維導圖: 51單片機驅動LED燈模塊 LED燈元器件簡介 LED(Light Emitting Diode,發光二極管) 是一種固態半導體器件,通過P-N結中電子與空穴復合直接將電能轉化為光能。其核心結構由P型半導體(空穴主導&a…

Git 完全手冊:從入門到團隊協作實戰(2)

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《C修煉之路》、《Linux修煉&#xff1a;終端之內 洞悉真理…

c語言中堆和棧的區別

1.棧區(stack):由編譯器自動分配釋放&#xff0c;棧主要用于存儲局部變量、函數參數、函數調用和返回信息等。其操作方式類似于數據結構中的棧。 2.堆區(heap):一般由程序員分配釋放&#xff0c;若程序員不釋放&#xff0c;則可能會引起內存泄漏。注堆和數據結構中的堆棧不一樣…

華為實驗WLAN 基礎配置隨練

業務vlan 20 192.168.20.x管理vlan 100 192.168.100.x步驟① 網絡互通Core sw:vlan batch 20 100 dhcp enable int vlanif 20IP add 192.168.20.1 24dhcp select interfaceinterface GigabitEthernet0/0/1/2port link-type trunkport trunk pvid vlan 100port trunk allow-pas…

CMake 如何查找 Python2和Python3

問題 在一個CMakeLists.txt文件里面看到了下面的這句話 find_package(Python2 COMPONENTS Interpreter Development NumPy)這個好有趣啊&#xff0c;Python2也是一個C的庫嗎&#xff0c;也有Python2Config.cmake或者FindPython2.cmake? 回答 find_package(Python2 COMPONENTS …

心靈筆記:刻意練習

心靈筆記&#xff1a;刻意練習提要 所有人都以為“杰出”源于“天賦”&#xff0c;而“天才”卻說&#xff1a;我的成就源于“正確的練習”&#xff01; 定義&#xff1a;刻意練習是一種有目的、有方法、能帶來能力持續提升的結構化訓練方式&#xff0c;它并非簡單的重復勞動&a…

langchain入門筆記03:使用fastapi部署本地大模型后端接口,優化局域網內的問答響應速度

文章目錄前言一、fastapi的簡單入門1&#xff1a;安裝必要的包&#xff08;python3.11&#xff09;&#xff1a;2&#xff1a;快速搭建一個fastapi&#xff1a;二、提升問答的響應速度1. fastapi部署后端接口&#xff0c;在局域網內訪問的方法2. 局域網內的測試&#xff1a;“未…

【CDA 新一級】學習筆記第1篇:數據分析的時代背景

作者&#xff1a;CDA持證人 張九領我們要學習數據分析&#xff0c;就要從當前時代的數據特點&#xff0c;找到在時代特點下企業需要數據分析的痛點&#xff0c;然后理解數據分析在企業中的作用。當前時代&#xff0c;數據分析的特征是哪些呢&#xff1f;我們用VUCA來概括數據分…

Vite 為什么比 Webpack 快?原理深度分析

Hi&#xff0c;我是布蘭妮甜 &#xff01;在現代前端開發中&#xff0c;構建工具的性能直接影響開發體驗和生產力。Webpack 作為傳統打包工具的代表&#xff0c;長期以來主導著前端構建領域&#xff0c;而 Vite 作為新一代的前端構建工具&#xff0c;憑借其出色的開發服務器啟動…

數字電路上的通訊速度是越快越好還是越慢越好?

昨天我突發奇想&#xff0c;修改了一下MCU和INA226以及DAC8551的通訊速率。之前的INA226用的是I2C通訊&#xff0c;之前設置的速率是100Kbps&#xff0c;DAC8551是SPI通訊&#xff0c;速率是10Mbps&#xff0c;昨天修改之前輸出位置的測試結果如圖&#xff1a;可以看到&#xf…

Google Gemini 的深度研究終于進入 API 階段

Google Gemini 最強大的功能之一是深度研究&#xff0c;但到目前為止&#xff0c;它一直嚴格限制在 Gemini 界面上。這種情況可能很快就會改變。 通過 Gemini 中的深度研究&#xff0c;您可以搜索幾乎任何內容&#xff0c;包括學者、現有研究論文等。 谷歌將深度研究描述為一…

通過beeware制作安卓apk用于獲取cpolar網址

我們都知道&#xff0c;沒有付費的cpolar用戶&#xff0c;要不時更新cpolar網址。每次都要自己登錄去獲取遠程的cpolar個人網址比較麻煩&#xff0c;好在可以用python去自動獲取。這里說的是&#xff0c;比如用手機裝termux軟件&#xff0c;再在termux中裝cpolar&#xff0c;然…