qt交叉編譯工具的建立

2021-08-22 09:31:56 字數 1840 閱讀 3585

一部分轉用的人家的,一部分我的經驗!

把軟體arm-linux-gcc-3.4.1.tar.bz2拷貝到/usr/local下,在終端執行如下命令安裝:

tar -xjf arm-linux-gcc-3.4.1.tar.bz2

生成的編譯工具在目錄/usr/local/arm/3.4.1/bin下,修改/etc/profile,增加如下一行。這可以讓我們直接執行arm-linux-gcc,而不必將其絕對路徑都寫出來,不過這得重新啟動後才生效:

pathmunge /usr/local/arm/3.4.1/bin

硬體:up-netarm2410s

下面的安裝以及環境變數的設定,按照這裡說的進行,但是有一點要注意,在configure的時候選擇large模式,要不可能會出現make出錯,可以試試,如果出錯了,再make clean就是了.

我按照說明,只進行到了第二點結束,因為我認為,qtopia暫時沒有必要試用.

還有我覺得這個裡面使用的版本太低,我會嘗試都使用qt3的版本的庫檔案.

還有他在交叉生成編譯檔案的時候,使用了progen和tmake,他的用法有點不對,我覺得,我是這麼用的:

假設hello工程有hello.h和hello.cpp兩個檔案,先用progen生成pro檔案,其實progen的意思就是pro檔案的gernerate(生成)工具.

progen -o hello.pro

tmake hello.pro -o makefile

make

中間可以檢視一下makefile檔案的內容,注意,cxx=arm-linux-g++,link=arm-linux-g++.

再可以把make後的檔案看看,file hello,系統會顯示這個是乙個elf檔案就是說這個是乙個arm上面執行的檔案!

在交叉編譯生成可執行檔案的時候,也就是在操作(三)下面的第三點的時候,如果新開的乙個終端,那麼以前的定義的一些臨時的環境變數是消失了的,一般系統也帶有qt,而我們的嵌入式的qt版本比系統的低階,最好是不要在系統路徑下面設定環境變數,tmake已經加入了系統路徑了,所以我們要重新設定一下,或者說定義一下.如下:

echo $tmakepath

檢視返回的結果的結尾字元是否是「……/qws/linux-arm-g++」,如果不是的話需要在命令列中重新設定tmakepath

export tmakepath=/tmake 的安裝路徑(如$tmakedir)/lib/qws/linux-arm-g++

我的系統就是:

export tmakepath=/gg/tmake-1.13/lib/qws/linux-arm-g++

再設定qtdir和qtedir:

qtedir要設定成為qte的資料夾,export qtedir=$pwd/qt-2.3.10-target,pwd是我所在的路徑,我的是/gg,也就是export qtedir=/gg/qt-2.3.10-target

再export qtdir=$qtedir就可以直接使用progen以及tmake工具了.

以上是如何生成elf格式的檔案,要生成主機上使用的.o檔案怎麼弄呢?

第一種方法:

首先安裝系統時候也安裝了高版本的qt,可以使用這個qt,用qmake工具,首先用qtdesigner建立乙個pro檔案和一些相應的.h和.cpp檔案,比如hello.cpp然後,qmake hello.pro,再make生成makefile,再make成功的話就可以./hello了.

第二種方法:

一. 安裝與建立qt 桌面執行環境

二 qt/e 的交叉編譯

要將我們寫好的程式發布到開發板上,我們需要對qt/embedded 重新編譯,與前面在宿主機上編譯類似,步驟如下:

宿主機上建立虛擬的qtopia 環境需要以下幾個步驟:

交叉編譯QT

qt x11 opensource src 4.4.3.tar.gz,qt embedded linux opensource src 4.4.3.tar.gz,arm linux gcc 3.4.1.tar.bz2 編譯環境 centos 4.4,gcc version 3.4.6 2006040...

交叉編譯工具

準備工具和系統 arm linux gcc 4.4.3.tar.gz arm linux gcc 4.4.3 使用者名稱 www.linuxidc.com 密碼 www.muu.cc 在 2011年linuxidc.com 10月 android系統移植 建立arm linux交叉編譯環境 ubun...

交叉編譯工具

arm linux gcc c o led.o led.s arm linux ld ttext 0 led.o o led.elf arm linux objcopy o binary s led.elf led.bin arm linux objdump d led.elf led.disarm...