0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在Linux開發(fā)板上跑一個(gè)qt程序的基本步驟

大魚機(jī)器人 ? 來源:果果小師弟 ? 作者:智果君 ? 2022-10-24 11:44 ? 次閱讀

01

前言

學(xué)Linux不難,難的是沒有找對(duì)教程,沒有人快速的帶你。開發(fā)板買了之后就放在那里吃灰,看視頻也看不下去,看文檔又看不懂,太難了!

本文以通俗易懂的方式講一下在正點(diǎn)原子Linux開發(fā)板上跑一個(gè)qt程序的基本步驟,爭(zhēng)取讓初學(xué)者能夠在半天的時(shí)間跑通第一個(gè)程序。


硬件:正點(diǎn)原子 Linux mini開發(fā)板 軟件:win10,vmware,ubuntu,qtcreator 運(yùn)行效果如下圖所示,就是在正點(diǎn)原子默認(rèn)的UI界面基礎(chǔ)上,運(yùn)行了一個(gè)serialport例程。

c05008d2-51dd-11ed-a3b6-dac502259ad0.png

先說一下初學(xué)Linux嵌入式開發(fā)的感受,學(xué)習(xí)STM32時(shí) ,熟悉了Keil或IAR這個(gè)集成開發(fā)環(huán)境,也可以用簡(jiǎn)單的寄存器來控制某一個(gè)引腳。

手做Linux開發(fā)之后,首先被幾十個(gè)G的安裝鏡像嚇住了,感覺Linux編譯起來特別復(fù)雜很難。還有就是密密麻麻的動(dòng)輒上百個(gè)字符的命令,對(duì)于習(xí)慣圖形化開發(fā)的我們來說,實(shí)在是感到太難了。

還有賣家那動(dòng)不動(dòng)就幾十個(gè)小時(shí)的視頻,視頻還分好幾期:驅(qū)動(dòng)開發(fā)、應(yīng)用開發(fā)、Qt開發(fā)等。

每個(gè)視頻都又長(zhǎng)又硬,我本開買個(gè)板子是想玩一下,結(jié)果要看這么多視頻,瞬間就不想學(xué)了,結(jié)果從入門到放棄,板子放那里吃灰。

本文的目的就是讓大家拋開視頻,把這個(gè)十幾小時(shí)的視頻濃縮成一篇文章,讓你快速體驗(yàn)嵌入式Linux的開發(fā)樂趣!當(dāng)然我建議官方也出一個(gè)快速把玩教程,讓開發(fā)者快速體驗(yàn)樂趣,這樣我想效果會(huì)更好!

02

下載資料

首先去正點(diǎn)原子論壇下載資料,注意不要下載視頻,視頻你可以在B站隨時(shí)隨地看,沒人會(huì)這么無(wú)聊把視頻下載下來吧!

c42ff548-51dd-11ed-a3b6-dac502259ad0.png

資料大多是百度網(wǎng)盤,如果不開會(huì)員的話會(huì)很慢,建議下載資料時(shí)買個(gè)臨時(shí)的會(huì)員下載,資料下載完了進(jìn)行下一步。

二、安裝虛擬機(jī)

安裝虛擬機(jī)基本在正點(diǎn)原子的大多數(shù)PDF教程里面都有,這里就不需要在多說了。如果看文章不清楚,也可以去B站看視頻。 c4ce2f92-51dd-11ed-a3b6-dac502259ad0.png

建議初學(xué)者仔細(xì)的看一遍,如果裝錯(cuò)了,沒事大不了刪了在再裝一次。 在安裝ubuntu這個(gè)步驟中,強(qiáng)烈建議直接下載正點(diǎn)原子已經(jīng)打包好qtcreator的鏡像,將這個(gè)鏡像安裝完畢后,就不用再一步步配置了。

對(duì)于需要快速跑通第一個(gè)linux程序的同學(xué)來說,可以避免學(xué)的越細(xì)越糊涂的陷阱。跳過這些繁瑣的步驟,可以讓我們快速站在全局高度理解整個(gè)開發(fā)過程。

這是啥意思呢?就是你新安裝的ubuntu不是啥環(huán)境啥軟件都沒有嘛,你需要自己安裝一遍,比較麻煩。

但是你可以用別人的正點(diǎn)原子的他們電腦里面的那個(gè)ubuntu系統(tǒng),他把這個(gè)系統(tǒng)打包好了給你,你只需要把他的打包好的系統(tǒng)安裝你的虛擬機(jī)就可以了,怎么樣? 是不是很神奇,你還可以在你的電腦安裝別人的電腦系統(tǒng)。這個(gè)系統(tǒng)在哪里呢?

c501e3c8-51dd-11ed-a3b6-dac502259ad0.png

下載下來是這樣

c5376b60-51dd-11ed-a3b6-dac502259ad0.png

然后按照這里的說明就可以安裝正點(diǎn)原子給你打包好的系統(tǒng)了。

c562f26c-51dd-11ed-a3b6-dac502259ad0.png

文件名:【正點(diǎn)原子】I.MX6U 虛擬機(jī)使用參考手冊(cè)V1.3.pdf

03

配置網(wǎng)絡(luò)環(huán)境

你安裝完ubuntu后很可能不能上網(wǎng),這個(gè)問題每個(gè)人遇到的都不一樣,建議按照正點(diǎn)原子的教程把你的windows、ubuntu、開發(fā)板讓他們網(wǎng)絡(luò)連接都正常。

可以參考:【正點(diǎn)原子】I.MX6U網(wǎng)絡(luò)環(huán)境TFTP&NFS搭建手冊(cè)V1.3.1.pdf

c65472e0-51dd-11ed-a3b6-dac502259ad0.png

如果文檔看不明白也有視頻,對(duì)照著視頻一步一步也可以。

c6777178-51dd-11ed-a3b6-dac502259ad0.png

所以網(wǎng)絡(luò)這一塊你也不需要擔(dān)心了。

04

安裝qtcreator

同樣安裝qtcreator軟件可以參考:【正點(diǎn)原子】I.MX6U嵌入式Qt開發(fā)指南V1.1.pdf

c6b4c456-51dd-11ed-a3b6-dac502259ad0.png

在ubuntu安裝完qtcreator軟件后,你就可以像windows下編寫程序,然后在ubuntu下面運(yùn)行了。但是我們的目的是讓qt軟件運(yùn)行在我們的arm開發(fā)板下面對(duì)吧!

這時(shí)我們自然想到在ubuntu下面安裝一個(gè)編譯工具把程序編譯成可以在arm開發(fā)板運(yùn)行的代碼吧!這個(gè)就叫做“交叉編譯鏈”。

交叉編譯器中“交叉”的意思就是在一個(gè)架構(gòu)上編譯另外一個(gè)架構(gòu)的代碼,相當(dāng)于兩種架構(gòu)“交叉”起來了,我們的電腦是x86架構(gòu),開發(fā)板是ARM架構(gòu)。

05

安裝qt交叉編譯器

可以參考:【正點(diǎn)原子】I.MX6U 出廠系統(tǒng)Qt交叉編譯環(huán)境搭建V1.6.pdf

第一章的內(nèi)容,安裝交叉編譯器。

你只有安裝了這個(gè),你才能在ubuntu中編譯出可以在ARM開發(fā)板上運(yùn)行的代碼,這一步必須做,而且還要按照她的教程一步一步來。

c70cd196-51dd-11ed-a3b6-dac502259ad0.png


5.1 編譯器拷貝

把開發(fā)板光盤 A-基礎(chǔ)資料->5、開發(fā)工具->1、交叉編譯器->fsl-imx-x11-glibc-x86_64-meta- toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 拷貝到 Ubuntu 虛擬機(jī)。

拷貝軟件可以用MobaXterm軟件,這個(gè)軟件的使用可以參考這篇文章:2022第一篇文,全能終端神器MobaXterm

c81f089c-51dd-11ed-a3b6-dac502259ad0.png

如下圖本文已經(jīng)把交叉編譯工具拷貝到了Ubuntu虛擬機(jī)。

c86cacc8-51dd-11ed-a3b6-dac502259ad0.png

執(zhí)行下面的指令修改腳本的權(quán)限,修改權(quán)限后可以看到此腳本顏色顯示改變,說明修改成功。


chmodu+xfsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 直接執(zhí)行腳本安裝交叉編譯工具,連續(xù)敲下兩次回車鍵確認(rèn),再輸入用戶密碼即可。本次安裝的目錄為腳本所指定的默認(rèn)安裝的目錄,后面的內(nèi)核編譯環(huán)境的交叉編譯都是按這個(gè)安裝目錄去操作。

c8856920-51dd-11ed-a3b6-dac502259ad0.png

5.2 配置環(huán)境變量

我們知道,在linux下,如果運(yùn)行一個(gè)可執(zhí)行文件,需要在對(duì)應(yīng)目錄下右鍵打開終端,然后./指令運(yùn)行它,那么我們?cè)谄渌募A下運(yùn)行一個(gè)指定的程序呢? 當(dāng)然可以,就是用到“環(huán)境變量”。沒錯(cuò),在Linux下也需要環(huán)境變量!其作用跟windows下一模一樣。就是相當(dāng)于省略了一個(gè)非常長(zhǎng)的目錄。沒有環(huán)境變量之前,我們需要輸入的指令是:


/aaa/bbb/ccc/ddd/eee/fff/hhh/xxx.sh 有了環(huán)境變量之后,我們輸入的指令是,這就是區(qū)別。環(huán)境變量讓系統(tǒng)知道,無(wú)論你在任何位置調(diào)用xxx.sh指令,都是調(diào)用的特定的文件夾下的某個(gè)程序。

xxx.sh 環(huán)境變量的設(shè)置方法是source /opt......我們?cè)诠こ棠夸浵掠益I打開終端,然后運(yùn)行環(huán)境變量。

source/opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

c8b3093e-51dd-11ed-a3b6-dac502259ad0.png

接下來使用env指令查看環(huán)境變量,出現(xiàn)這些字樣的配置選項(xiàng)之后,就可以了。它表示我們已經(jīng)將剛安裝的“交叉編譯工具鏈”設(shè)置到環(huán)境變量了。

c8c51fa2-51dd-11ed-a3b6-dac502259ad0.png

使用arm-poky-linux-gnueabi-gcc -v指令可以查看 gcc 版本,表明環(huán)境變量已經(jīng)生效。

c8e93d88-51dd-11ed-a3b6-dac502259ad0.png

OK,至此你的qt交叉編譯器就安裝好了。

5.3 安裝交叉編譯環(huán)境

上面你只是在ubuntu下你裝了交叉編譯器器,想編譯 Qt 應(yīng)用程序在開發(fā)板上運(yùn)行起來,那么還需要搭建交叉編譯環(huán)境,使用 ARM平臺(tái)的交叉編譯器編譯的程序才能在I.MX6U 開發(fā)板上運(yùn)行起來。

主要就是在 配置 Qt Creator中配置Kits,Kit 譯作套件,也就是開發(fā)編譯環(huán)境套件,可以搭建不同平臺(tái)的套件,以不同的套件編譯出不同平臺(tái)的應(yīng)用程序,也驗(yàn)證了 Qt 跨平臺(tái)的特性!如果你安裝了Android的套件,你還可以在你的手機(jī)上運(yùn)行qt程序。

這里我們需要在腳本里寫入設(shè)置使能環(huán)境變量的指令,首先打開此腳本。


sudovi/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh 在qtcreator.sh里的第一行插入如下指令,如下圖所示。

source/opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

c9088abc-51dd-11ed-a3b6-dac502259ad0.png

保存腳本文件(ESC : wq)。使用如下指令打開Qt Creator?!?”的作用是后臺(tái)運(yùn)行

/opt/Qt5.12.9/Tools/QtCreator/bin/qtcreator.sh&

c918ddcc-51dd-11ed-a3b6-dac502259ad0.png

5.4 安裝kits

在你安裝qtcreater軟件后默認(rèn)只有這一個(gè)kits,然后按照教程搭建另外兩個(gè)kits,其中ATK-I.MX6U是用來大imx6ull ARM平臺(tái)運(yùn)行的套件。IMX6U-rsync是用來網(wǎng)絡(luò)調(diào)試下載程序到開發(fā)板的套件,就是你在qtcreater上面編譯好后,點(diǎn)擊運(yùn)行,就會(huì)直接在開發(fā)板上面顯示你的程序效果。

c940481c-51dd-11ed-a3b6-dac502259ad0.png

在 Qt Creator 中默認(rèn)情況下,會(huì)使用 sftp 或 rsync 發(fā)送程序到板卡。由于正點(diǎn)原子 I.MX6U 出廠 Qt 文件系統(tǒng)(文件系統(tǒng) V1.9 及之后的)里有 rsync 指令,因此可以很方便地使用此方式進(jìn)行 Qt 遠(yuǎn)程調(diào)試。首先我們要確認(rèn)下當(dāng)前出廠文件系統(tǒng)版本號(hào),在出廠系統(tǒng)執(zhí)行以下指令。


cat/etc/version

c95fcf84-51dd-11ed-a3b6-dac502259ad0.png

如果文件系統(tǒng)不是 V1.9 的,或者不支持 rsync 指令,請(qǐng)去網(wǎng)盤下載最新的出廠系統(tǒng),使用最新的系統(tǒng)來進(jìn)行。

設(shè)置開發(fā)板靜態(tài) ip 由于LAN8720PHY 網(wǎng)絡(luò)芯片沒有MAC地址,系統(tǒng)啟動(dòng)時(shí)會(huì)生成隨機(jī)MAC地址給網(wǎng)絡(luò)使用。每次都生成一個(gè)MAC地址,導(dǎo)致每次開機(jī)網(wǎng)絡(luò)獲取的ip不是固定的。(v2.3 版本文件系統(tǒng)已固定一個(gè)隨機(jī)MAC地址,不會(huì)因每次開機(jī)改變,請(qǐng)更新到最新文件系統(tǒng))所以我們要設(shè)置給它一個(gè)靜態(tài)的ip,不因MAC地址的改變而改變,設(shè)置固定ip方法調(diào)試。

開發(fā)板啟動(dòng)時(shí)會(huì)自動(dòng)獲取ip,最簡(jiǎn)單的方法是直接設(shè)置一個(gè)ip給它。這樣我們就在出廠文件系統(tǒng)里/etc/rc.local 文件里如圖位置添加以下文件。

vi/etc/rc.local 添加以下內(nèi)容,請(qǐng)根據(jù)個(gè)人使用的路由器,設(shè)置相應(yīng)網(wǎng)段的ip地址。下圖為設(shè)置 eth0 的靜態(tài)ip地址。請(qǐng)注意這個(gè) ip 與其他設(shè)備的ip沖突!

PATH=/sbin:/bin:/usr/sbin:/usr/bin ifconfigeth0192.168.1.115netmask255.255.255.0 routeadddefaultgw192.168.1.1 echo"nameserver114.114.114.114">/etc/resolv.conf

c99ce82e-51dd-11ed-a3b6-dac502259ad0.png

這樣之后沒每次開發(fā)板連接網(wǎng)線上電后,開發(fā)板的IP地址就為192.168.1.115。 加下來參考 【正點(diǎn)原子】I.MX6U 出廠系統(tǒng)Qt交叉編譯環(huán)境搭建V1.6.pdf 2.5.1小節(jié),完成rsync方式Qt遠(yuǎn)程調(diào)試kits安裝。

c9d3b2d2-51dd-11ed-a3b6-dac502259ad0.png

06

實(shí)戰(zhàn)開搞

我們打開正點(diǎn)原子自帶的例程,這里以Qt/03/03_serialport為例。雙擊03_serialport.pro。

c9ef3778-51dd-11ed-a3b6-dac502259ad0.png

打開后選擇IMX6U-rsync套件

ca060cbe-51dd-11ed-a3b6-dac502259ad0.png

打開后軟件會(huì)自動(dòng)編譯,一般是沒有錯(cuò)誤的,直接點(diǎn)擊左下角的綠色三角號(hào)編譯運(yùn)行。

ca2a0cb8-51dd-11ed-a3b6-dac502259ad0.png

然后你就可以在開發(fā)板上面看到神奇的一幕,你的上位機(jī)跑到開發(fā)板上面了,之后你連接開發(fā)板上面的串口就可以愉快的玩耍了。

:因?yàn)殚_發(fā)板有正點(diǎn)原子的開機(jī)qt桌面,你可以禁止它不讓他顯示,參考如下:

cb08b7ce-51dd-11ed-a3b6-dac502259ad0.png

最終效果:

cb8cdedc-51dd-11ed-a3b6-dac502259ad0.jpg





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式開發(fā)
    +關(guān)注

    關(guān)注

    18

    文章

    1012

    瀏覽量

    47436
  • Linux開發(fā)板
    +關(guān)注

    關(guān)注

    0

    文章

    27

    瀏覽量

    11405
  • qt程序
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1741

原文標(biāo)題:我在Linux開發(fā)板上跑的第一個(gè)Qt程序

文章出處:【微信號(hào):All_best_xiaolong,微信公眾號(hào):大魚機(jī)器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式Linux-Qt環(huán)境搭建 Qt程序運(yùn)行測(cè)試

    本編介紹如何在嵌入式Linux開發(fā)板配置Qt運(yùn)行環(huán)境,并進(jìn)行Qt程序運(yùn)行測(cè)試。
    的頭像 發(fā)表于 06-01 09:07 ?7298次閱讀
    嵌入式<b class='flag-5'>Linux-Qt</b>環(huán)境搭建 <b class='flag-5'>Qt</b><b class='flag-5'>程序</b>運(yùn)行測(cè)試

    如何在嵌入式Linux開發(fā)板配置Qt運(yùn)行環(huán)境

    本文基于I.MX6ULL芯片的Linux開發(fā)板,介紹如何在嵌入式Linux開發(fā)板配置Qt運(yùn)行環(huán)
    發(fā)表于 10-10 09:56 ?2523次閱讀

    Linux系統(tǒng)中搭建Qt Creator開發(fā)環(huán)境

    Linux開發(fā)板中配置Qt運(yùn)行環(huán)境文中介紹了如何將Qt移植到Linux
    發(fā)表于 11-29 14:06 ?2402次閱讀

    PCQT怎樣控制開發(fā)板的LED

    請(qǐng)問如何用電腦QT界面控制S3C2440的驅(qū)動(dòng)程序,使得LED燈亮?我PC機(jī)上用QT編寫
    發(fā)表于 09-02 10:32

    如何快速上手開發(fā)板,并且HarmonyOS個(gè)簡(jiǎn)單程序?

    如何快速上手開發(fā)板,并且HarmonyOS個(gè)簡(jiǎn)單
    發(fā)表于 09-10 14:36

    如何用QT開發(fā)個(gè)軟件放在板子

    您好,我現(xiàn)在想用QT開發(fā)個(gè)軟件放在板子,但是
    發(fā)表于 01-04 07:28

    Arm linux開發(fā)環(huán)境下運(yùn)行主機(jī)中編譯好的QT程序

    的,這個(gè)時(shí)候我們可以考慮不在開發(fā)板搭建Qtopia環(huán)境,只將Qte移植過去即可,只要版本OK,QT程序即可在開發(fā)板的終端界面直接運(yùn)行!完成
    發(fā)表于 06-27 15:47

    如何將Qt程序移植到Arm開發(fā)板

    各位大俠,我現(xiàn)在在Linux Red Hat 9.0下用Qt編寫了個(gè)簡(jiǎn)單的程序,如何將該程序
    發(fā)表于 07-13 11:51

    文詳解RK3308開發(fā)板Qt開發(fā)的流程

    應(yīng)用程序,而無(wú)需下載編譯 SDK 代碼。SDK中編譯QT工具鏈準(zhǔn)備工作:Ubuntu系統(tǒng)RK3308 Linux SDKQt Creator開發(fā)
    發(fā)表于 08-16 16:58

    【米爾-全志T113-S3開發(fā)板- 極致雙核A7國(guó)產(chǎn)處理器-試用體驗(yàn)】從零開始開發(fā)板QT程序

    : source /etc/file 之后如果順利,你就能把你ubutunqt程序傳到開發(fā)板進(jìn)行通了。 但是第
    發(fā)表于 09-07 21:48

    Linux Qt 及Arm開發(fā)板漢字顯示

    問題,今天我把種NB的方法介紹給大家,請(qǐng)豎起耳朵。 先說開發(fā)環(huán)境: Linux : 使用 虛擬機(jī) 安裝的 Ubuntu 14.04 Qt
    發(fā)表于 01-24 11:33 ?551次閱讀

    嵌入式Linux應(yīng)用程序開發(fā)-(1)第一個(gè)嵌入式QT應(yīng)用程序

    一個(gè)嵌入式QT應(yīng)用程序成功安裝 Qt Creator 開發(fā)環(huán)境后,我們通過
    發(fā)表于 11-01 17:21 ?16次下載
    嵌入式<b class='flag-5'>Linux</b>應(yīng)用<b class='flag-5'>程序</b><b class='flag-5'>開發(fā)</b>-(1)第<b class='flag-5'>一個(gè)</b>嵌入式<b class='flag-5'>QT</b>應(yīng)用<b class='flag-5'>程序</b>

    使用Qt Creator遠(yuǎn)程調(diào)試部署應(yīng)用到嵌入式linux開發(fā)板

    開發(fā)環(huán)境后,使用Qt Creator加載交叉編譯好的的Qt SDK包,般完成編譯后生成可執(zhí)行程序然后拷貝到
    發(fā)表于 11-01 17:38 ?23次下載
    使用<b class='flag-5'>Qt</b> Creator遠(yuǎn)程調(diào)試部署應(yīng)用到嵌入式<b class='flag-5'>linux</b><b class='flag-5'>開發(fā)板</b>

    如何配置和操作Linux驅(qū)動(dòng)程序開發(fā)板

    本文檔概述了利用Linux開發(fā)板Linux 內(nèi)核開發(fā)驅(qū)動(dòng)程序的基礎(chǔ)知識(shí),并簡(jiǎn)單介紹了如何配置和操作
    的頭像 發(fā)表于 02-15 13:36 ?2889次閱讀
    如何配置和操作<b class='flag-5'>Linux</b>驅(qū)動(dòng)<b class='flag-5'>程序</b><b class='flag-5'>開發(fā)板</b>

    linux開發(fā)板如何編譯curl

    Linux開發(fā)板編譯 curl 庫(kù)通常涉及到幾個(gè)步驟,包括準(zhǔn)備開發(fā)環(huán)境、下載源代碼、配置編譯
    的頭像 發(fā)表于 08-30 15:33 ?341次閱讀