Qt交叉編譯工具建立 上篇
本文主要內容為編譯器的安裝,安裝與建立Qt 桌面運行環境,Qt/E 的交叉編譯,建立本機Qtopia 虛擬平臺,Qtopia2.1.1 在2410-上的移植,預備:編譯器安裝:
編譯器: arm-linux-gcc-3.4.1.tar.bz2(軟件從網上下載,如果不知道從什么地方下載,google就是了。)
把軟件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
這一步,不一定要下載同樣的版本的交叉編譯工具,我用的是2.95.3,在執行完這一步的時候,把環境變量加入到profile以后,注消一下,以便于以后的路徑里面是arm-linux-g++.
下面的安裝以及環境變量的設置,按照這里說的進行,但是有一點要注意,在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庫來運行,條件就是開始已經安裝了這些庫,有一點要注意的就是要按照安裝時候設置的路徑重新定義一下環境變量.否則會出錯的.
當然了這里也要用qtdesigner創建一個pro文件和一些相應的.h和.cpp文件,然后用progen和tmake工具生成makefile!
還有一點要注意就是qvfb這個工具不一定要用tools里面的,可以在網上 新下載一個編譯之后運行,可以把路徑加入系統路徑以后方便自己用.
安裝與建立Qt 桌面運行環境
軟件:PC 機操作系統REDHAT LINUX 9.0 +MINICOM + ARM-LINUX 開發環境
- tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gz
- qt-x11-2.3.2 .tar.gz
軟件從網上下載,如果不知道從什么地方下載,google就是了。
把本次實驗用到的三個文件拷貝到/root/2410sQt目錄下,以下的步驟是假設你在/root/2410sQt 下操作的。
Qt/Embedded 平臺的搭建需要以下幾步:
第一步,解壓安裝包并設置環境變量
- tar –xzvf tmake-1.13.tar.gz
- tar –xzvf qt-x11-2.3.2.tar.gz
- tar –xzvf
- qt-embedded-2.3.10-free.tar.gz
- mv qt-2.3.10 qt-2.3.10-host
- export TMAKEDIR=$PWD/tmake-1.13
- export QT2DIR=$PWD/qt-2.3.2
- export QTEDIR=$PWD/qt-2.3.10-host
環境變量的設置是非常重要的,它關系到能否正確的安裝及編譯這些安裝包.
注意: 在以下安裝中,make命令執行前先執行一下make clean命令.
第二步,編譯Qt/Embedded。
1. Build Qt2.3.2
- cd $QT2DIR
- export TMAKEPATH=$TMAKEDIR/lib/linux-g++
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- make clean
- ./configure -no-xft
這個地方要注意 ,large 模式
- make
- mkdir $QTEDIR/bin
- cp bin/uic $QTEDIR/bin/
2. Build Qvfb
- export TMAKEPATH=$TMAKEDIR/lib/linux-g++
- export QTDIR=$QT2DIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- cd $QTEDIR/tools/qvfb
- make clean
- tmake -o Makefile qvfb.pro
- make
- mv qvfb $QTEDIR/bin/
這一步build qvfb 并建立了從Qt/Embedded 2.3.10 到Qt 2.3.2 的靜態庫的鏈接。其中qvfb 工具用來生成Virtual framebuffer,這是一個非常有用的工具,它可以模擬在開發板上的顯示情況,如果在Virtual framebuffer 中運行沒有問題的話,可以直接通過交叉編譯在開發板上運行。
3. Build Qt/Embedded
- cd $QTEDIR
- export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
- export QTDIR=$QTEDIR
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- make clean
- ./configure -no-xft -qvfb -depths 4,8,16,32
- make
第三步 查看運行結果
如果上面各步都能夠成功的編譯通過,下面就可以通過運行Qt/Embedded 自帶的demo 來查看運行結果。
在Virtual framebuffer 上運行:
- export QTDIR=$QTEDIR
- export PATH=$QTEDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH
- cd $QTEDIR/examples/launcher
- qvfb -width 640 -height 480 &
- sleep 10
- ./launcher -qws
小結:本篇內容介紹完了,想要繼續深入,請參考 Qt交叉編譯工具建 中篇 ,最后希望本文對你有幫助!