linux下arm平台Qt編譯環境搭建與解析

2021-06-21 16:12:55 字數 2832 閱讀 5323

一.概述:

我們知道qtcreator,這只是個ide,他包括了乙個編譯器--qmake.這兩者的關係與codeblocks和g++的關係一樣,首先要明白這些。

而我們在linux下搭建arm平台的qt編譯環境,主要的是要使用適合arm的qmake,正如我們編譯在arm上使用c++程式時要用arm-none-linux-gnueabi-g++一樣。而qmake只是我們使用的工具,自然不需要也不能換。所以我們只要使用arm-none-linux-gnueabi-g++編譯乙個qmake即可(主要是編譯生成arm上適合使用庫,qmake應該還是適合linux下使用的,否則也無法編譯)。

二.環境:

pc機:linux即可,我用的是ubuntu,這些沒什麼影響

arm:arm9,這個也沒什麼影響,只是你的交叉編譯器一定要對應你的arm平台

交叉編譯器:arm-none-linux-gnueabi-,編譯器用適合自己的arm平台的,至於交叉編譯器的使用,這裡不做講述了。

qtcreator:qt4.8左右的,這個也無所謂,只是配置稍微不同,思路一樣

qmake:使用qt-everywhere-opensource-src-4.7.4.tar.gz生成,核心就是這一步。

三.準備

1.安裝交叉編譯器,包括配置環境,arm-none-linux-gnueabi-g++可用應該就沒有問題了,這裡可以參考前面對交叉編譯器安裝的記錄。

四.armqt庫的編譯生成

1.解壓。。。。。。。。。。。。

2.進入qt-everywhere...........接下來有人說要改mkspecs/qws/linux-arm-g++/qmake.conf(當前目錄下),這是應為自己要用的交叉編譯器是arm-none-linux-gnueabi-而不是

arm-linux-,其實不需要,應為mkspecs/qws/下有linux-arm-gnueabi-g++可以對應我們要用的交叉編譯器,我們使用它既可

3.     ./configure -prefix /usr/local/qt-4.7.3-linux-arm-install -embedded arm -host-little-endian -no-cups -no-3dnow -nomake examples -nomake demos -nomake docs -xplatform /qws/linux-arm-g++    -prefix代表你的安裝目錄,-embedded代表安裝嵌入式版本的,最後的-xplatform指定編譯器,如上步描述的一樣。

4.上步中會有幾次提示,第一次問你開源還是*****,總之選o就可以了,過一段時間還會提示你,選擇yes既可,如果沒有這兩步的話就是有問題,就不要浪費幾個小時去make了,重新來過吧。如果成功,他會提示你執行make執行make install,還會告訴你安裝在哪個目錄。

5.make,幾個小時才可以。

6.make install ,這樣就算完成了,你會再安裝目錄看到有bin,include,lib燈這些目錄,跟gcc的目錄差不多,跟編譯完boost的目錄也差不多,其實道理都是一樣的。

7.需要的話你要給你的qmake改個名字(你的電腦安裝qtcreator的時候已經有個qmake了,這是電腦版的),如armqmake,這樣你就可以配置環境變數了,可以在任意目錄執行你的armqmake,我沒有做這裡,自己不需要。

到這裡,其實你就可以使用qmake了:

順序執行以下操作:

@1. 執行:qmake -project hello1.cpp

生成 hello1.pro 工程檔案

@2. 執行:qmake hello1.pro

生成 makefile 檔案

@3. 執行:make

生成 hello.o, hello 檔案

五.配置qtcreator,這是為了開發方便

假設你已經安裝好creator了,上面工具欄tool->option->左邊build&run->qtversion,新增你的arm版的qmake(armqmake)。

還是這裡,選tool chains新增你的交叉編譯器。

選unconfigured project,不同版本可能不同,有個不是這個名字,但是作用一樣。代表你要用哪個qmake對應哪個編譯器(對,兩個編譯器,g++跟qmake,linuxpc對應pc的,arm對應arm的)。然後對應即可,有時候可能toolchain找不到你剛配置的交叉編譯器,你關了重開option就該出來了。

六.鏈結檔案配置

問題:1.匯入qmake的時候可能會報錯,我的是報錯了,個人覺得應該都報錯。

這需要進入mkspecs目錄檢視default指向**,正確的應該指向/qws/linux-arm-gnueabi-g++,(不清楚預設的是不是這個,我這裡沒有檢視,因為出現上圖的問題,我直接改了),總之刪除default,然後執行ln -s qws/linux-arm-gnueabi-g++ default就可以了,重新配置qtcreator後發現正常了(option視窗要關閉再開啟)。

七.常見編譯問題總結

1.2011-10-29 15:58

在編譯arm版本的qt程式時,出現錯誤error: main.o: relocations in generic elf (em: 3)。因為開始我的程式是編譯成了x86版的程式,然後我想編譯到arm下執行,編譯的時候出現了上述錯誤。

解決辦法:對工程clean一下,你再重新編譯應該就沒錯了。

2. undefined reference to 'qwskeyboardhandler::

出現這個問題,是說這個類沒找到,而你發現這個類的確是在標頭檔案包含的,這可能是因為你的編譯器還是用的linux版本的,而這個類只存在arm版本。

解決辦法:qmakearm要配置對,另外也可能是上面問題的default有問題,更改即可。

linux下arm平台Qt編譯環境搭建與解析

一.概述 我們知道qtcreator,這只是個ide,他包括了乙個編譯器 qmake.這兩者的關係與codeblocks和g 的關係一樣,首先要明白這些。而我們在linux下搭建arm平台的qt編譯環境,主要的是要使用適合arm的qmake,正如我們編譯在arm上使用c 程式時要用arm none ...

PC和ARM平台編譯Qt的命令

編譯for pc 的qt過程是 1 qmake project qmake命令,用於建立hello.pro,將所有的檔案編譯成乙個與平台無關的工程檔案 注意 按照前面步驟安裝好qt環境之後,要將qmake的路徑加入系統的環境變數。路徑是 usr local trolltech qtembedded ...

qt 5 12 10在Arm平台的編譯

作業系統 麒麟銀河v10 uos經驗證也可以 cpu 平台 arm 安裝依賴 sudo apt install flex bison gperf sudo apt get install build essential libgl1 mesa dev libglu1 mesa dev libegl1...