日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

arm-linux 程序开发入门(QT窗口应用程序、编码、交叉编译、调试)(三机器和双机器搭建方法)(笔记)

發(fā)布時(shí)間:2025/3/20 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arm-linux 程序开发入门(QT窗口应用程序、编码、交叉编译、调试)(三机器和双机器搭建方法)(笔记) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linux及Arm-Linux程序開發(fā)筆記(零基礎(chǔ)入門篇)

文章目錄

    • 前言
    • 一、Arm-Linux程序開發(fā)平臺(tái)簡要介紹
      • 1.1程序開發(fā)所需系統(tǒng)及開發(fā)語言
      • 1.2系統(tǒng)平臺(tái)搭建方式
    • 二、Linux開發(fā)平臺(tái)搭建(略)
      • 2.1安裝虛擬工作站
      • 2.2 安裝Linux虛擬機(jī)
    • 三、Fedora-linux系統(tǒng)(略)
    • 四、使用Eclipse CDT開發(fā)Linux程序(略)
    • 五、使用Eclipse開發(fā)Arm-linux程序
      • 5.2開發(fā)控制臺(tái)程序
        • 5.2.1使用Eclipse CDT編寫代碼
        • 5.2.2建立交叉編譯環(huán)境
        • 5.2.3編譯并運(yùn)行程序
        • 5.3一些常用的軟件介紹
      • 5.4開發(fā)arm-linux窗口程序
        • 5.4.2編譯生成可執(zhí)行窗體程序
    • 六、高級(jí)Linux程序設(shè)計(jì)
      • 6.1多文件控制臺(tái)項(xiàng)目
      • 6.2 多文件Qt項(xiàng)目
      • 6.2.1 使用Qt Designer設(shè)置界面
        • 6.2.2 多文件Qt開發(fā)時(shí)的一些經(jīng)典錯(cuò)誤
      • 6.3 關(guān)于makefile

前言

本文記錄了自己從一個(gè)完全不懂Linux的人如何一步步學(xué)會(huì)Linux程序開發(fā)的過程。當(dāng)然也希望本文能夠達(dá)到它的目的,讓那些和我一樣沒有任何基礎(chǔ)的人也能快速入門Linux程序開發(fā)。

一、Arm-Linux程序開發(fā)平臺(tái)簡要介紹

Arm-Linux程序的開發(fā)并不像我們以前接觸的Windows程序開發(fā)那樣,關(guān)于平臺(tái)的搭建就繁瑣很多,所以在正式進(jìn)入程序開發(fā)之前先對(duì)這種開發(fā)模式進(jìn)行簡要介紹,讓一個(gè)即使沒有任何Linux開發(fā)經(jīng)驗(yàn)的程序員也能夠看懂后面的內(nèi)容。

1.1程序開發(fā)所需系統(tǒng)及開發(fā)語言

開發(fā)arm-linux程序至少需要三種系統(tǒng):

  • Windows系統(tǒng)。
    主要用來文件傳送和一些簡單的文本文件編輯。這個(gè)系統(tǒng)其實(shí)并非必需,只是因?yàn)槟壳癙C機(jī)上最流行的系統(tǒng)仍然是Windows系統(tǒng),我們的很多關(guān)于PC的文件和數(shù)據(jù)的操作習(xí)慣都是在Windows系統(tǒng)上養(yǎng)成的,已經(jīng)對(duì)其形成了嚴(yán)重的依賴,所以Windows系統(tǒng)扮演著的“輔助開發(fā)系統(tǒng)”的角色。

  • PC-Linux系統(tǒng)。
    在此系統(tǒng)上安裝arm-Linux交叉編譯器后,就可以對(duì)代碼文本文件進(jìn)行編譯,生成可在arm-Linux系統(tǒng)中運(yùn)行可執(zhí)行程序。此系統(tǒng)被稱為“Linux宿主機(jī)”,我們對(duì)Linux程序的開發(fā)工作(包括代碼編寫、調(diào)試和編譯生成可執(zhí)行文件)基本上就是在此系統(tǒng)上進(jìn)行的。

  • Arm-Linux系統(tǒng)。
    Arm-Linux程序運(yùn)行的平臺(tái)。此系統(tǒng)的硬件載體是一塊小型的嵌入式arm板,我們?cè)贚inux宿主機(jī)上開發(fā)好程序并編譯生成arm-linux可執(zhí)行程序后,將可執(zhí)行程序文件傳送到嵌入式arm板中,然后就可以在arm板上直接運(yùn)行此程序了。

三種系統(tǒng)的職能和聯(lián)系如下圖:

關(guān)于每個(gè)系統(tǒng)的職能及操作還有文件如何傳送交流都在后面詳細(xì)介紹。

關(guān)于開發(fā)語言,因?yàn)槟壳百徺I的Arm-Linux嵌入式板提供的編譯庫都是C/C++的,所以一般選擇C/C++進(jìn)行程序設(shè)計(jì)。

1.2系統(tǒng)平臺(tái)搭建方式

關(guān)于“三系統(tǒng)”的搭建方式,有兩種方法:三臺(tái)分立的單系統(tǒng)機(jī)器組合或者一臺(tái)雙系統(tǒng)PC機(jī)和一臺(tái)單系統(tǒng)Arm板機(jī)器。但是不管采用哪種組合方式,各種系統(tǒng)的職能都是一樣的,而且都是通過FTP、Telnet或者SSH等網(wǎng)絡(luò)協(xié)議進(jìn)行文件傳輸交流。

  • “三機(jī)器”組合模式。將三個(gè)系統(tǒng)分別安裝在三臺(tái)機(jī)器上并將三臺(tái)機(jī)器組建局域網(wǎng)。

  • “兩機(jī)器”組合模式。在PC機(jī)上利用虛擬工作站可以同時(shí)運(yùn)行兩個(gè)系統(tǒng),虛擬機(jī)上的Linux系統(tǒng)基本可以完成所有的實(shí)體PC-Linux機(jī)器的所有任務(wù),當(dāng)然也能夠組建局域網(wǎng)。

“三機(jī)器”組合模式圖

“兩機(jī)器”組合模式圖

如果開發(fā)人員對(duì)機(jī)器性能要求比較高,那么建議采用“三機(jī)器”組合模式。因?yàn)椤皟蓹C(jī)器”組合模式要求一臺(tái)機(jī)器運(yùn)行雙系統(tǒng),每個(gè)系統(tǒng)都需要分配一定的硬件資源,可能會(huì)對(duì)每個(gè)系統(tǒng)運(yùn)行的流暢程序都造成影響。

如果開發(fā)人員只進(jìn)行一些簡單的程序開發(fā),則建議采用“兩機(jī)器”組合模式。這樣可以節(jié)省硬件設(shè)備的投資,而且開發(fā)環(huán)境的搭建、開發(fā)的流程等等都會(huì)簡單一些。而且下面的內(nèi)容都是基于這種“兩機(jī)器”組合的開發(fā)模式。

二、Linux開發(fā)平臺(tái)搭建(略)

2.1安裝虛擬工作站

目前比較流行的虛擬工作站比較多,推薦使用VM-ware WorkStation。建立虛擬工作站的目的就是為了使一臺(tái)機(jī)器同時(shí)運(yùn)行多個(gè)不同類型的系統(tǒng),方便開發(fā)人員進(jìn)行跨平臺(tái)開發(fā)應(yīng)用程序。

(關(guān)于VMware,可以到網(wǎng)上搜索到詳細(xì)介紹和使用方法,在此不再贅述)

2.2 安裝Linux虛擬機(jī)

略略略

三、Fedora-linux系統(tǒng)(略)

四、使用Eclipse CDT開發(fā)Linux程序(略)

五、使用Eclipse開發(fā)Arm-linux程序

Arm-Linux機(jī)器采用的是飛凌嵌入式技術(shù)公司的FL2440開發(fā)板。在飛凌公司購買開發(fā)板的時(shí)候,會(huì)隨開發(fā)板一起贈(zèng)送的相關(guān)入門教程《飛凌開發(fā)板配套教程》并附有一張光盤,里面有各種寫FL2440相關(guān)的開發(fā)資源。

在正式進(jìn)入程序開發(fā)之前,先對(duì)FL2440開發(fā)板及arm-linux系統(tǒng)進(jìn)行熟悉。

Fl2440開發(fā)板:熟悉Bootloader的使用方法、學(xué)會(huì)燒寫內(nèi)核、燒寫文件系統(tǒng)等等。

Arm-linux系統(tǒng):熟悉利用一些文件系統(tǒng)和網(wǎng)絡(luò)設(shè)置相關(guān)的命令。如果你對(duì)Linux命令已經(jīng)有了一定了解,那么arm-linux上的命令也基本一樣。

(詳細(xì)操作過程請(qǐng)參考《飛凌開發(fā)板配套教程》一書)

5.2開發(fā)控制臺(tái)程序

主要開發(fā)流程圖如下:

在早期的開發(fā)環(huán)境方式中,是先用文本編輯器編寫c或者cpp文件,然后再直接在Linux機(jī)器上通過交叉編譯命令,編譯代碼文本文件并生成可執(zhí)行程序,然后將可執(zhí)行程序傳送到arm-linux板上,然后就可以在arm-linux機(jī)器上運(yùn)行程序了。

現(xiàn)在的開發(fā)模式和早期的開發(fā)模式一樣,只是在編寫代碼的工具上進(jìn)行了改進(jìn)。早期編寫代碼的工具只要是能編輯文本的軟件就可以,甚至在Linux中通過終端的vi命令就可以搞定,Linux機(jī)器的職能僅僅是編寫代碼和編譯代碼。現(xiàn)在則使用Eclipse CDT,可以在Linux機(jī)器上編寫C/C++代碼并進(jìn)行調(diào)試,Linux機(jī)器基本上可以模擬arm-linux系統(tǒng)上除了一些硬件相關(guān)度高的應(yīng)用程序(如驅(qū)動(dòng)程序)之外的絕大部分其它程序的運(yùn)行環(huán)境。(攝像頭不可模擬嗎?)

5.2.1使用Eclipse CDT編寫代碼

其實(shí)和用Eclipse CDT編寫Linux環(huán)境下的控制臺(tái)程序是完全一樣。除了在一些特別的場(chǎng)合,比如編寫驅(qū)動(dòng)程序,需要注意差別外,其余的功能的實(shí)現(xiàn)方法基本上一樣。

這方面屬于程序設(shè)計(jì)的基本功,需要長期學(xué)習(xí)和積累,所以在此不再多述。

5.2.2建立交叉編譯環(huán)境

雖然生成程序的源碼是一樣的,但是在Linux機(jī)器上編譯生成的可執(zhí)行文件是不能在arm-linux系統(tǒng)上運(yùn)行的,需要用arm-linux專用的編譯器進(jìn)行編譯后,才能生成可在arm-linux系統(tǒng)上運(yùn)行的可執(zhí)行文件,當(dāng)然此時(shí)應(yīng)用程序又顯然不能在Linux系統(tǒng)上運(yùn)行了。

將交叉編譯工具cross-2.95.3.tar.bz2(可以到網(wǎng)上下載,也可以到開發(fā)板附帶的光盤資源中找到)通過共享目錄傳送到Linux系統(tǒng)中,然后在Linux系統(tǒng)終端中先進(jìn)入其文件目錄,然后執(zhí)行解壓命令:

tar xjvf cross-2.95.3.tar.bz2

然后在/usr/local/arm文件目錄下可以看到解壓后的2.95.3的庫了,或者如果你解壓的是cross-3.4.1.tar.bz2的版本,那么將會(huì)在對(duì)應(yīng)目錄下生成3.4.1的目錄。


然后設(shè)置環(huán)境變量。因?yàn)長inux機(jī)器上存在不止一種編譯器,為了避免環(huán)境變量沖突,最好新建一個(gè)賬號(hào)(用戶【大概是有的編譯器指令相同,需要避免環(huán)境變量沖突,所以需要新建用戶?】),比如新建賬號(hào)arm-linux-gcc,然后在對(duì)應(yīng)的賬號(hào)目錄中找到.bash_profile文件,設(shè)置環(huán)境變量,編輯.bash_profile,在最后一行增加路徑(vi打開文本文件,按i表示insert修改文本文件,然后Esc退出insert模式,再shift zz表示保存退出文件,詳細(xì)的命令介紹可以到網(wǎng)上查閱相關(guān)資料):

export PATH=/usr/local/arm/2.95.3/bin:$PATH

可以通過echo $PATH來查看環(huán)境變量是否設(shè)置成功:

5.2.3編譯并運(yùn)行程序

在編輯好了代碼文件并建立好了交叉編譯環(huán)境后,就開始編譯代碼生成可執(zhí)行程序,并移植到arm板上運(yùn)行程序。

在Linux系統(tǒng)的終端中通過輸入arm-linux-gcc/arm-linux-g++來編譯C/C++文件。例如,我們對(duì)前面編寫的最簡單的CppHelloWorld.cpp文件進(jìn)行編譯:

arm-linux-g++ CppHelloWorld.cpp –o CppHello


然后在對(duì)應(yīng)目錄下會(huì)生成一個(gè)可在arm-linux系統(tǒng)上運(yùn)行的應(yīng)用程序CppHello。

然后通過SSH服務(wù)和FTP服務(wù),將可執(zhí)行文件從Linux文件系統(tǒng)網(wǎng)絡(luò)傳送到arm-linux文件系統(tǒng)(在此用到了兩個(gè)小軟件SSH Secure和LeapFTP,在后面再對(duì)軟件的功能進(jìn)行一下簡要介紹)。


然后在Windows機(jī)器上遠(yuǎn)程登錄arm-linux系統(tǒng)開發(fā)板,并控制程序運(yùn)行


注意:需要先通過chmod +x CppHello來告訴系統(tǒng)此文件是可執(zhí)行文件,然后再通過./CppHello來運(yùn)行程序。

我們可以看到程序運(yùn)行的結(jié)果:在屏幕上打印出一行字“Hello World”

5.3一些常用的軟件介紹

在上面介紹的一些操作中,在進(jìn)行文件傳送的時(shí)候用到了一些軟件,在此進(jìn)行簡要介紹。(經(jīng)過數(shù)十年的發(fā)展,新出了一些軟件,比如Xshell之類的)


三系統(tǒng)之間的主要網(wǎng)絡(luò)架構(gòu)如下:

注意:

1.如果arm-linux系統(tǒng)的ftp和telnet連接不上,一般情況下是arm-linux默認(rèn)沒有開啟相應(yīng)的服務(wù)或者默認(rèn)ip和windows機(jī)器不在同一網(wǎng)段??梢酝ㄟ^串口線將arm板連接到電腦上,然后打開超級(jí)終端,輸入命令vsftpd&開啟ftp服務(wù),輸入命令telnetd開啟telnet服務(wù),ifconfig eth0 192.168.1.16設(shè)置IP到同一網(wǎng)段。

2.如果Linux系統(tǒng)的SSH連接不上,則一般情況下是Linux系統(tǒng)開啟了SSH的防火墻,則只需要在Linux系統(tǒng)中對(duì)防火墻進(jìn)行相關(guān)設(shè)置,關(guān)閉針對(duì)SSH的防火墻?!維ystem】–【Administration】–【Firewall】,然后勾選全能SSH。



還有一些其它軟件,比如小組協(xié)作時(shí)候,需要使用SVN進(jìn)行代碼管理;還有遠(yuǎn)程桌面VNC Viewer,可以進(jìn)行遠(yuǎn)程桌面控制(但是效果不太好,桌面顯示的延時(shí)好像比較嚴(yán)重)等等。

5.4開發(fā)arm-linux窗口程序

5.4.1建立Qt交叉編譯環(huán)境

在Linux系統(tǒng)中新建目錄/root/yizhi,然后將已經(jīng)編譯好的arm-QT庫復(fù)制到此目錄下面。


然后將上面那六個(gè)tar.gz壓縮文件解壓到/root/yizhi目錄。

在進(jìn)行arm-linux下的Qt編譯的時(shí)候,也涉及到環(huán)境變量設(shè)置問題,所以我們也最好再新建一個(gè)賬戶,專門用于編譯arm-Qt程序。

例如,在Linux系統(tǒng)終端中添加用戶zsm,然后進(jìn)入到/home/zsm中,對(duì).bash_profile進(jìn)行修改,設(shè)置環(huán)境變量:

(為什么要管環(huán)境變量,這關(guān)環(huán)境變量什么事?)

在命令終端中l(wèi)s –a 顯示隱藏的所有文件 找到.bash_profile,輸入:

gedit .bash_profile &

用geidt打開此文件后,在最后面添加下面的環(huán)境變量設(shè)置:

export PATH=/root/yizhi/qtopia-free-2.2.0/qtopia/bin:/root/yizhi/qtopia-free-2.2.0/tmake/bin:/root/yizhi/qtopia-free-2.2.0/qt2/bin:/usr/local/arm/2.95.3/bin:$PATHexport QTDIR=/root/yizhi/qtopia-free-2.2.0/qt2export QTEDIR=/root/yizhi/qtopia-free-2.2.0/qtopia/export LD_LIBRARY_PATH=$QTDIR/lib:$QPEDIR/lib:$LD_LIBRARY_PATHexport CC=/usr/local/arm/2.95.3/bin/arm-linux-gccexport TMAKEDIR=/root/yizhi/qtopia-free-2.2.0/tmakeexport TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

設(shè)置好后最好重新登錄此賬號(hào),然后在終端中輸入echo $PATH來檢驗(yàn)環(huán)境變量是否設(shè)置成功:


如果出現(xiàn)上面的輸出,則表示arm-linux平臺(tái)下的Qt交叉編譯環(huán)境的環(huán)境變量已經(jīng)設(shè)置成功。接下來就可以進(jìn)行Qt程序開發(fā)了。

5.4.2編譯生成可執(zhí)行窗體程序

在3.2節(jié)中已經(jīng)寫好了一個(gè)單文件的項(xiàng)目QtHello,并在項(xiàng)目的src目錄下生成了一個(gè)QtHello.cpp文件,然后我們要做的就是利用arm-linux下的Qt編譯器對(duì)其進(jìn)行編譯。

編譯Qt窗體項(xiàng)目比編譯普通控制臺(tái)項(xiàng)目要稍微麻煩一點(diǎn),需要自己寫makefile來建立編譯規(guī)則,編譯如上的QtHello.cpp的makefile有如下模板:

############################################################################## Makefile for building hello# Generated by tmake at 20:58, 2011/04/14# Project: hello# Template: app#################################################################################### Compiler, tools and optionsCC = arm-linux-gccCXX = arm-linux-g++CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUGCXXFLAGS= -pipe -DQWS -fno-exceptions -fno-rtti -Wall -W -O2 -DNO_DEBUGINCPATH = -I. -I$(QTDIR)/includeLINK = arm-linux-gccLFLAGS =LIBS = $(SUBLIBS) -L$(QTDIR)/lib -lm -lqteMOC = $(QTDIR)/bin/mocUIC = $(QTDIR)/bin/uicTAR = tar -cfGZIP = gzip -9f####### FilesTARGET = QtHelloHEADERS = $(TARGET).hSOURCES = $(TARGET).cppOBJECTS = $(TARGET).oDIST =INTERFACE_DECL_PATH = .####### Implicit rules.SUFFIXES: .cpp .cxx .cc .C .c.cpp.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<.cxx.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<.cc.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<.C.o:$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<.c.o:$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<####### Build rulesall: $(TARGET)$(TARGET): $(OBJECTS)$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)dist:$(TAR) hello.tar hello.pro $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST)$(GZIP) hello.tarclean:-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET)-rm -f *~ core####### Sub-libraries###### Combined headers####### Compile$(TARGET).o: $(TARGET).cpp

用zsm賬號(hào)登錄(因?yàn)殛P(guān)于arm-Qt庫的編譯環(huán)境變量是在此賬號(hào)中設(shè)置的),然后執(zhí)行如下步驟:

1.將makefile模板文件放置到src目錄下面

2.用eclipse或者其它文本編輯器,修改makefile里面的TARGET一項(xiàng)為當(dāng)前項(xiàng)目名稱

3.打開Teminal控制終端,進(jìn)入到src目錄,輸入make


4.然后會(huì)在src目錄下面生成一個(gè)指定名稱相應(yīng)的QtHello文件,這個(gè)就是arm目標(biāo)板上的運(yùn)行程序了。

5.將QtHello文件傳送到arm板并運(yùn)行程序(詳細(xì)操作方法在4.2.3節(jié)中有介紹)。


在Windows機(jī)器上遠(yuǎn)程登錄arm板,控制程序運(yùn)行,然后可以看到arm板上運(yùn)行的結(jié)果了。

六、高級(jí)Linux程序設(shè)計(jì)

前面所介紹的不管是控制臺(tái)還是窗體程序,都屬于單文件項(xiàng)目的范圍。而當(dāng)程序的功能比較復(fù)雜時(shí),則往往需要很多模塊和文件,這樣在向arm-linux上移植程序時(shí)會(huì)更加繁瑣一些,需要開發(fā)人員自己寫makefile,建立多文件的編譯規(guī)則。

因?yàn)槲覍?duì)此沒有進(jìn)入深入一點(diǎn)的研究,所以只能提供下大致思路和在開發(fā)程序時(shí)遇到的一些常見問題及解決方案。如果今后有機(jī)會(huì)有時(shí)間的話,則會(huì)對(duì)makefile進(jìn)行深入一點(diǎn)的研究,最好是能以Eclipse自己生成的makefile模板為基礎(chǔ)進(jìn)行簡單的修改,然后就可以編譯生成arm板上的可執(zhí)行程序。

6.1多文件控制臺(tái)項(xiàng)目

多文件的控制臺(tái)程序的makefile可能會(huì)容易一些,自己也沒有研究過,以前在使用Magic C++編寫C++控制臺(tái)程序的時(shí)候,只需要對(duì)Magic C++生成的makefile模塊中的編譯器進(jìn)行修改就可以輕松為多文件生成基于arm-linux平臺(tái)上的控制臺(tái)程序。


(關(guān)于如何對(duì)Eclipse的makefile模板進(jìn)行修改,目前還沒有研究過,今后有時(shí)間研究的話,再補(bǔ)充上吧。)

6.2 多文件Qt項(xiàng)目

目前只對(duì)簡單的多文件項(xiàng)目進(jìn)行了嘗試:一個(gè)main函數(shù)文件,一個(gè)窗體頭文件,一個(gè)窗體實(shí)現(xiàn)文件。

6.2.1 使用Qt Designer設(shè)置界面

在Linux系統(tǒng)中打開Qt Designer,然后進(jìn)行可視化窗口設(shè)計(jì)。然后點(diǎn)擊保存為mydialog.ui文件。


打開mydialog.ui文件,發(fā)現(xiàn)其實(shí)只是一個(gè)xml文件:

顯然這個(gè)文件是不能直接被C++項(xiàng)目引用的,需要使用Qt Designer的編譯器進(jìn)行編譯,生成和界面對(duì)應(yīng)的h和cpp文件。

在Terminal終端里面運(yùn)行以下命令:

uic xxx.ui -o xxx.h 生成.h文件uic xxx.ui -i xxx.h -o xxx.cpp 生成.cpp文件


然后生成的mydialog.h和mydialog.cpp文件就是和mydialog.ui相對(duì)應(yīng)的程序代碼文件了??梢栽贓clipse項(xiàng)目中直接對(duì)此文件進(jìn)行引用,就可以顯示對(duì)應(yīng)的窗體了。

6.2.2 多文件Qt開發(fā)時(shí)的一些經(jīng)典錯(cuò)誤

  • 經(jīng)典錯(cuò)誤一:
“undefined reference to ……”


這是在引用Qt的庫時(shí),產(chǎn)生了某些歧義,需要進(jìn)行一些預(yù)先處理,生成和界面文件相對(duì)應(yīng)的moc文件,關(guān)于問題的詳細(xì)介紹可以參考下面的帖子:

http://hi.baidu.com/asky007/blog/item/7aad95ccbee5ba1601e928d7.html

(靠,太多年了,已經(jīng)打不開了!)

解決方案:

在Linux控制終端中進(jìn)入到項(xiàng)目代碼文件目錄,執(zhí)行

qmake –projectqmakemake

然后此目錄下會(huì)生成一系列的文件,如moc_xx.cpp,moc_xx.o,src,src_pro等等。然后再到Eclipse中編譯此項(xiàng)目,則錯(cuò)誤消失。

  • 經(jīng)典錯(cuò)誤二:

在Linux機(jī)器上能運(yùn)行的Qt窗口程序,在arm-linux下的Qt編譯器下無法通過。

可能的問題是Qt庫版本問題,或者是有些Qt運(yùn)行環(huán)境在Linux機(jī)和arm-linux機(jī)上有所不同,這就需要重新尋找新的代替解決方案。正是因?yàn)檫@些很多不確定的因素,所以在進(jìn)行arm-linux界面程序開發(fā)時(shí),需要經(jīng)常在編寫一段新代碼就要在arm板上進(jìn)行測(cè)試,可以避免做太多無用功。

6.3 關(guān)于makefile

關(guān)于多文件Qt項(xiàng)目向arm-linux系統(tǒng)上的移植,比較核心的技術(shù)應(yīng)該就在makefile上吧,目前自己了解太少,只限于對(duì)模板的應(yīng)用,所以下面的就寫不下去了。

下面有一篇到網(wǎng)上找到的關(guān)于makefile結(jié)構(gòu)分析的帖子,今后有機(jī)會(huì)再研究吧。

http://blog.csdn.net/liang13664759/archive/2007/09/04/1771246.aspx

https://blog.csdn.net/liang13664759/article/details/1771246

(WoW,2021年的帖子引用2011年的帖子,2011年的帖子引用2007年的帖子,牛掰!CSDN萬古長青)

七、學(xué)習(xí)資料

關(guān)于Linux下的Qt開發(fā),在安裝了的Fedora里面有相關(guān)的本地reference和相關(guān)的源碼。如:Qt Assistant

關(guān)于arm-linux下的Qt開發(fā),安裝交叉編譯環(huán)境時(shí)候,也有相關(guān)文檔和源碼:

總結(jié)

以上是生活随笔為你收集整理的arm-linux 程序开发入门(QT窗口应用程序、编码、交叉编译、调试)(三机器和双机器搭建方法)(笔记)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。