嵌入式成长轨迹34 【嵌入式学习阶段】【ARM环境调试】【QT 移植环境及简单程序示例】---补充《ok6410 Qt移植百科全书》...
更新版
http://www.cnblogs.com/zeedmood/archive/2012/12/08/2808393.html
?
書(shū)上提及的有這些,分別說(shuō)明下,里邊打*可以不弄:
? Tslib1.4的編譯 用于編譯觸控模塊。自己的虛擬機(jī)上需要有這個(gè)。但如果板子文件系統(tǒng)/usr/local里邊已經(jīng)有tslib了,那可以不用再移動(dòng)進(jìn)去——這里編譯的tslib是給Qtopia4.4.3用的,如果換成4.4.3打開(kāi)不了觸控的話(huà),也可先用2.2.0系統(tǒng)打開(kāi),過(guò)了觸控調(diào)試之后再換回4.4.3.或者使用飛凌自帶的校準(zhǔn)腳本,使用方法在里邊有提及
? Qtopia4.4.3、*Qtopia2.2.0的編譯 用于板子內(nèi)系統(tǒng)界面。弄了Qtopia4.4.3的話(huà),Qtopia2.2.0就可以不用了,但是前者一定要,到后期編譯還得用上。
? Qt/E4.7的編譯 這個(gè)還是要在虛擬機(jī)上布置,編譯時(shí)間也會(huì)比較長(zhǎng),大概2、3小時(shí)
?
那本《ok6410 Qt移植百科全書(shū)》確實(shí)沒(méi)提及的問(wèn)題比較多,接下來(lái)我給補(bǔ)充下:
【問(wèn)題如下】
配置安裝參數(shù)
root@ubuntu:~/Desktop/tslib/tslib# ./configure --host=arm-linux??????? --cache-file=arm-linux.cache?????????????????????????????????????????? --enable-inputapi=no?????????????????????????????????????????????????? PLUGIN_DIR=/usr/local/arm/tslib/plugins??????????????????????????????? -prefix=/usr/local/arm/tslib/build???????????????????????????????????? -host=arm-linux??????????????????????????????????????????????????????? --cache-file=arm-linux.cache 2>&1 | tee conf_log
configure: WARNING: unrecognized options: --enable-inputapi
configure: WARNING: if you wanted to set the --build type, don't use --host.
??? If a cross compiler is detected then cross compile mode will be used
configure: loading cache arm-linux.cache
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
……
configure: WARNING: unrecognized options: --enable-inputapi
將 --enable-inputapi=no 改為 --enable-input=no 錯(cuò)誤消除,但不知對(duì)不對(duì)
?
make[1]: g++: Command not found
make[1]: *** [project.o] Error 127
configure exited with value 2 at /witech/qt-extended-4.4.3/src/build/bin/configure line 5215
?main::bootstrap_qt() called at /witech/qt-extended-4.4.3/src/build/bin/configure line 1784
make: *** [src/build/mkconf/configure] Error 2
./build: line 53: bin/qbuild: No such file or directory
./build: line 54: bin/qbuild: No such file or directory
解決:
安裝g++
?
?
在編譯qt-extended-4.4.3的config階段,出現(xiàn)以下錯(cuò)誤后退出:
Checking the compiler (host): OK (GCC 4, Little Endian)
Checking the compiler (target): FAIL
Note: Run configure -verbose for verbose errors
make: *** [src/build/mkconf/configure] Error 1
解決方法:
這表明你的編譯器安裝的路徑不對(duì)!
用arm-linux-gcc -v查看正確的交叉編譯器安裝路徑,輸出的文本中有一項(xiàng)是:
--prefix=/usr/local/arm/4.1.2
表示,你的交叉編譯正確的安裝路徑是/usr/local/arm/4.1.2
你應(yīng)該把/usr/local/arm/4.1.2/bin加入到PATH環(huán)境變量中去!
?
?
修改環(huán)境變量,把交叉編譯器的路徑加入到PATH。
?(虛擬機(jī)/主機(jī))方法一:
??修改/etc/bash.bashrc文件 #vim /etc/bash.bashrc???????????? 在最后加上:
??export PATH=$PATH:/usr/local/arm/3.4.1/bin (注意修改版本、、、)
??export PATH
?(開(kāi)發(fā)板)方法二:
??修改/etc/profile文件:????????
??# vim /etc/profile 增加路徑設(shè)置,在末尾添加如下,保存/etc/profile文件:??
??export PATH=$PATH:/usr/local/arm/3.4.1/bin
?方法三:
??#export PATH=$PATH:/usr/local/arm/3.4.1/bin ????????
??注:(這只能在當(dāng)前的終端下才是有效的!)
立即使新的環(huán)境變量生效,不用重啟電腦:
?對(duì)應(yīng)方法一:#source /root/.bashrc
?對(duì)應(yīng)方法二:# source /etc/profile
檢查是否將路徑加入到PATH:
?# echo $PATH
?顯示的內(nèi)容中有/usr/local/arm/bin,說(shuō)明已經(jīng)將交叉編譯器的路徑加入PATH。
測(cè)試交叉編譯命令和工具版本
??????? # arm-linux-gcc -v
至此,交叉編譯環(huán)境安裝完成。
?
?
bash: export: `PATH=/usr/local/arm/4.3.2/bin:……': not a valid identifier
解決BASH SHELL腳本報(bào)錯(cuò) ‘: not a valid identifier
當(dāng)在shell編輯腳本時(shí),運(yùn)行時(shí)出現(xiàn)了" ‘: not a valid identifier ",或者會(huì)出現(xiàn)(: command not found,許多莫名其妙的符號(hào))很可能你在windows下編輯,在Linux下運(yùn)行,由于Linux和windows的文本格式不同所導(dǎo)致的。上面可能是反應(yīng)之一,有時(shí)終端顯示" :沒(méi)有文件…"也是這個(gè)原因造成的 大部分由分號(hào)開(kāi)頭":"
解決方法:只要用UltraEdit工具轉(zhuǎn)換成Linux格式,重新source運(yùn)行無(wú)錯(cuò)誤即可;或者還是老老實(shí)實(shí)在linux下打一遍吧、、
?
?
當(dāng)在windows下的多用戶(hù)(例如在一個(gè)用戶(hù)里安裝程序,而在另一個(gè)用戶(hù)里使用),或虛擬機(jī)中的Linux下也出現(xiàn)過(guò)這樣的情況,就是安裝完Qt Creator后運(yùn)行程序,出現(xiàn)No valid Qt version set 的問(wèn)題
解決方法:
以下幾個(gè)步驟:
1、/etc/bash.bashrc后追加設(shè)置環(huán)境變量
?#qt
?export PATH=/opt/qt-4.7.1/bin:/opt/qt-4.7.1/lib:$PATH
2、打開(kāi)上方菜單Tools->options,左邊選擇build and run,之后在里邊將qmake、gcc添加
auto detected的就不用管了,要的話(huà)就添加
Qt Versions
? Qt 4.7.1 (qt-4.7.1) /opt/qt-4.7.1/bin/qmake
在QT creator版本中手動(dòng)加入了編譯好的ARM版本,此時(shí)提示沒(méi)有工具鏈,左邊顯示為紅色嘆號(hào)
Tool Chains
? GCC-arm /usr/local/arm/4.3.2/bin/arm-linux-gcc-4.3.2
? GCC /usr/bin/gcc-4.6
同時(shí)在工具鏈中加入/usr/local/arm/4.3.2/bin/arm-linux-g++編譯器路徑后,提示沒(méi)有安裝qmlviewer,左邊顯示為黃色嘆號(hào)。
3、在主頁(yè)面左邊菜單欄project那里,開(kāi)起來(lái)就在第一種build&run方式里邊,將qt版本和工具鏈都選上(如果要在電腦上運(yùn)行,就得用里邊配搭的Qt4.8而不是用4.7.1)。如果無(wú)法選擇,就跳到第二種,嘗試manage選上各個(gè)版本和工具鏈?zhǔn)怪せ?#xff0c;再回第一種就出現(xiàn)可以選擇了(、、、不要問(wèn)我為什么,我也是走投無(wú)路、、、也許關(guān)掉qt creator再重啟也行)。選好之后退出,在主頁(yè)面build,運(yùn)氣好此時(shí)就能成功了。
4、還不能執(zhí)行
/code/Helloword/moc_dialog.cpp:16: error: #error "(The moc has changed too much.)"
如果本來(lái)有一些生成的配置文件,用make clean甚至make distclean刪除,再試。?
Starting /witech/Helloword/Helloword...
Failed to start program. Path or permissions wrong?
/witech/Helloword/Helloword exited with code -1
解決:將權(quán)限改為777,或者用make clean刪除一些多余文件
?
?
***沒(méi)有規(guī)則可以創(chuàng)建“XXX”需要的目標(biāo)“XXX”問(wèn)題的解決方案
解決:
make clean 再不行就用make distclean
make clean 和make distclean的區(qū)別:make clean僅僅是清除之前編譯的可執(zhí)行文件及配置文件。而make distclean要清除所有生成的文件。make distclean類(lèi)似make clean,但同時(shí)也將configure生成的文件全部刪除掉,包括Makefile。
上面的問(wèn)題的根源是因?yàn)?#xff0c;經(jīng)過(guò)拿來(lái)主義的代碼里面已經(jīng)有配置文件,是根據(jù)原來(lái)的編譯環(huán)境生成的,僅僅通過(guò)make clean并不能清楚之前的配置文件,沒(méi)有清除之前的配置文件就進(jìn)行編譯,編譯器本著相信程序員的態(tài)度,編譯時(shí)不會(huì)產(chǎn)生新的configure生成的附帶文件,而是根據(jù)原來(lái)的configure生成的文件進(jìn)行編譯,這樣就會(huì)導(dǎo)致上面的一系列編譯錯(cuò)誤。make distclean可以將所有的垃圾,之前環(huán)境所有的余孽清理干凈,這樣就不會(huì)給編譯器偷懶的機(jī)會(huì)。
?
?
QT編譯問(wèn)題:/usr/local/Trolltech/Qt-4.7.0/bin/uic:命令未找到
解決:
??? 我在linux下安裝了QT之后,將在windows下寫(xiě)的程序拷貝到linux下,然后運(yùn)行qmake命令,沒(méi)有問(wèn)題,當(dāng)運(yùn)行make命令的時(shí)候,出現(xiàn)了編譯錯(cuò)誤,如下:
/usr/local/Trolltech/Qt-4.7.0/bin/uic:命令未找到
?????? 錯(cuò)誤的大體意思就是沒(méi)有找到那個(gè)需要使用的在指定文件夾下的可執(zhí)行文件uic,我到我的/usr/local目錄下沒(méi)有找到Trolltech這個(gè)目錄,因?yàn)槲野惭bQT 的目錄是qt-everywhere,于是為了使編譯器能夠找到它需要的那個(gè)命令,我將在/usr/local目錄下建立一個(gè)軟連接,直接指向編譯器需要的目錄。
具體做法如下:首先在/usr/local目錄下建立一個(gè)文件夾Trolltech,然后進(jìn)入這個(gè)文件夾,再執(zhí)行下面的這個(gè)命令,
ln -s? /usr/local/qt-everywhere?? Qt-4.7.0
這樣由Qt-4.7.0就可以找到bin目錄下的uic可執(zhí)行文件了。
?
?
qmake后出現(xiàn)錯(cuò)誤 qt_config.prf:10: include(file) requires one argument.
解決:
環(huán)境變量設(shè)置的問(wèn)題,將QMAKESPEC修改下或刪掉
?
?
用qmake正常,之后再make的話(huà),會(huì)有這樣的錯(cuò)誤信息
?from dialog.cpp:1:
?/witech/qt-extended-4.4.3/qtopiacore/qconfig-qpe.h:1:91: error: http://www.cnblogs.com/http://www.cnblogs.com/../qt-?extended-4.4.3/qtopiacore/qt/src/corelib/global/qconfig-qpe.h: No such file or directory
?make: *** [dialog.o] 錯(cuò)誤 1
用Qt Creator(在tools->options中添加arm用qmake)的話(huà),在最后也同樣能得到這樣的錯(cuò)誤信息:
?/witech/qt-extended-4.4.3/qtopiacore/qconfig-qpe.h:1: error: http://www.cnblogs.com/http://www.cnblogs.com/../qt-?extended-4.4.3/qtopiacore/qt/src/corelib/global/qconfig-qpe.h: No such file or directory
不過(guò)這次從第一行能看到錯(cuò)誤,似乎在 In file included from /witech/builddir/sdk/qtopiacore/qconfig-qpe.h:1,雙擊該錯(cuò)誤直接跳到/witech/builddir/sdk/qtopiacore/qconfig-qpe.h:1:
?#include "/witech/qt-extended-4.4.3/qtopiacore/qconfig-qpe.h"
這個(gè)路徑是錯(cuò)誤的,里邊沒(méi)有這個(gè)文件。
于是在硬盤(pán)里找了很久之后,才發(fā)現(xiàn)真的沒(méi)有、、、
后來(lái)才突然想起來(lái),會(huì)不會(huì)是之前的一個(gè)操作,把文件誤刪了呢?因?yàn)閝t-extended-4.4.3和builddir當(dāng)時(shí)都在,前者打開(kāi)里邊的東西后者好像都有,就順手把前者給刪了、、、估計(jì)因?yàn)檫@樣、、才出事的
手賤沒(méi)辦法,還是重新編譯一個(gè)吧、、、三小時(shí)啊、、、
?
因?yàn)檎`刪所以重裝、、、qt-extended-4.4.3,結(jié)果:
http://www.cnblogs.com/../qt-extended-4.4.3/qbuild/src/main.cpp:49:33: warning: ignoring return value of 'int chdir(const char*)', declared with attribute warn_unused_result [-Wunused-result]
make[1]: *** [main.o] Error 1
make exited with value 2 at /witech/qt-extended-4.4.3/src/build/bin/configure line 2355
make: *** [src/build/mkconf/configure] Error 1
./build: 行 53: bin/qbuild: 沒(méi)有那個(gè)文件或目錄
./build: 行 54: bin/qbuild: 沒(méi)有那個(gè)文件或目錄
解決:
“我用的是ubuntu11.04的,我安裝了g++編譯器后,再把qt creator卸掉,就可以了,另外,可以用g++ -v查看g++編譯器是否已安裝”
之后還是不行、、、哎、、、只好直接重裝系統(tǒng)了、、、(其實(shí)我后來(lái)懷疑應(yīng)該先卸掉g++,再重裝,不過(guò)已經(jīng)沒(méi)勇氣再看到出現(xiàn)這個(gè)錯(cuò)誤了)
這周全部工作推翻重來(lái),誤刪害人啊、、、
?
?
ubuntu 如何卸載qt creator
解決:
假如你是通過(guò)軟件中心或者apt安裝的。可以在軟件中心-》所有軟件(點(diǎn)已安裝會(huì)很慢的)里面找到,然后點(diǎn)擊卸載。
或者在命令行:sudo apt-get remover qtcreator
假如你是從諾基亞或者論壇下載的qt的二進(jìn)制安裝包安裝的。
進(jìn)入qt的安裝目錄默認(rèn)是/opt/Qt...
然后用管理員權(quán)限運(yùn)行SDKManger,選擇removed all compoent單選框,確定。即可。
?
?
這個(gè)是百科全書(shū)里邊有提及的,不過(guò)還是mark一下:
qmake之后立即make;或者使用QtCreator進(jìn)行構(gòu)建,會(huì)發(fā)生錯(cuò)誤
moc_dialog.o:(.rodata+0x11c): undefined reference to `typeinfo for QDialog'
collect2: ld returned 1 exit status
make: *** [Helloword] Error 1
解決:
要修改下Makefile,在CFLAGS和CXXFLAGS中添加" -fno-rtti "編譯參數(shù),保存退出,之后編譯就可以通過(guò)了。
?
這個(gè)按照書(shū)上說(shuō)的設(shè)置還是不行
./Helloword: error while loading shared libraries: libQtGui.so.4: cannot open sh
ared object file: No such file or directory
解決:
其實(shí)libQtGui.so.4這個(gè)文件是有的,只是要設(shè)好環(huán)境變量。書(shū)上沒(méi)有添加LD_LIBRARY_PATH
然后不知道為何在里邊用腳本卻改不了環(huán)境變量,只有在/etc/profile里固化了、、、
重新設(shè)置開(kāi)發(fā)板的環(huán)境變量為(/etc/profile):
#Qt
export PATH='/opt/Qtopia4.4.3/lib:/opt/Qtopia4.4.3/bin:/sbin:/usr/sbin:/bin:/usr/bin'
export QPEDIR='/opt/Qtopia4.4.3'
export QTDIR='/opt/Qtopia4.4.3'
export QT_QWS_FONTDIR='/opt/Qtopia4.4.3/lib/fonts'
export QWS_DISPLAY='LinuxFb:mmWidth152:mmHeight88:1'
export QWS_MOUSE_PROTO='Tslib:/dev/input/event1'
export TSLIB_CALIBFILE='/etc/pointercal'
export TSLIB_CONFFILE='/usr/local/tslib/etc/ts.conf'
export TSLIB_CONSOLEDEVICE='none'
export TSLIB_FBDEVICE='/dev/fb0'
export TSLIB_PLUGINDIR='/usr/local/tslib/lib/ts'
export TSLIB_ROOT='/usr/local/tslib'
export TSLIB_TSDEVICE='/dev/input/event1'
export TSLIB_TSEVENTTYPE='H3600'
export QT_PLUGIN_PATH='/opt/Qtopia4.4.3/plugins:/opt/Qtopia4.4.3/qt_plugins/'
export LD_LIBRARY_PATH=$TSLIB_ROOT/lib:$QTDIR/lib:$QTDIR/qt_plugins/:/usr/local/lib:$LD_LIBRARY_PATH
?
?
也談Qt經(jīng)典出錯(cuò)信息之QApplication: No such file or directory
http://blog.csdn.net/qter_wd007/article/details/5377131
這個(gè)問(wèn)題似乎是老生常談了,好多朋友也都就這個(gè)問(wèn)題做了探究,這里我說(shuō)說(shuō)我的看法,以及對(duì)于初學(xué)者而言,如何快速定位問(wèn)題,快速解決問(wèn)題,
下面是網(wǎng)友zhu的完整闡述:
這個(gè)出錯(cuò)信息一般是新手在編譯Qt4第一個(gè)應(yīng)用”Hello,World”的時(shí)候,翻開(kāi)Qt編程的第一個(gè)例子。都說(shuō)很簡(jiǎn)單。
#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QWidget *ww=new QWidget();
ww->resize(300,200);
ww->show();
return app.exec();
}
一編譯結(jié)果出現(xiàn)了上面這個(gè)錯(cuò)誤,那叫一個(gè)郁悶。
其實(shí)花點(diǎn)心思照著提示,新手也是可以自己解決問(wèn)題的。根據(jù)提示QApplication提示,應(yīng)該是頭文件沒(méi)找到。那我們可以查看當(dāng)前目錄下Makefile里的環(huán)境變量INCPATH知道m(xù)ake應(yīng)用是去哪里找頭文件的。例如
./Makefile 文件部分內(nèi)容
15 CXXFLAGS????? = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
16 INCPATH?????? = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I.
17 LINK????????? = g++
第16行里面的,對(duì)應(yīng)的去查找/usr/include/qt4/QtGui/QApplication這個(gè)文件是否存在(一般是不存在,存在就不會(huì)出錯(cuò)了)。不存在QApplication文件的原因大致有兩個(gè)
1)沒(méi)有裝Qt4的開(kāi)發(fā)包 .
解決辦法把開(kāi)發(fā)包裝上,比如ubuntu下就是在shell里執(zhí)行sudo install libqt4-dev;Fedora/SUSe下是在shell里執(zhí)行sudo yum install qt4-devel
2) Qt4的開(kāi)發(fā)包裝了,但是調(diào)用了Qt3的qmake
因?yàn)橛械南到y(tǒng)里既裝了Qt3,又裝了Qt4。如果調(diào)用了qt3的qmake,那么上頭的INCPATH里的頭文件路徑也指向了Qt3,那么是找不到 QApplication這個(gè)文件的。對(duì)應(yīng)的解決方法就是調(diào)用Qt4安裝路徑下的qmake去生成Makefile,最好用全路徑。我的機(jī)器Qt4中 qmake安裝路徑是
zhu@ubuntu:~/test/widget$ dpkg -L qt4-qmake |grep qmake |grep bin
/usr/bin/qmake-qt4
/usr/share/qt4/bin/qmake
所以只要執(zhí)行
/usr/bin/qmake-qt4;make 或者 /usr/share/qt4/bin/qmake:make
都能以Qt4的文件去編譯這個(gè)最簡(jiǎn)單的Qt4應(yīng)用。
原文鏈接:http://www.cuteqt.com/blog/?p=307
對(duì)于新學(xué)習(xí)Qt朋友而言,其實(shí)只要了解了這些內(nèi)部緣由即可,這種情況一般就是環(huán)境變量沒(méi)有設(shè)置正確的原因。
一是根本就沒(méi)有設(shè)置環(huán)境變量,比如使用SDK方式安裝Qt,但卻又不使用Qt Creator作為IDE(Qt Creator在運(yùn)行時(shí)會(huì)自動(dòng)為開(kāi)發(fā)者設(shè)置好環(huán)境),而是使用其他的IDE或者是vim等來(lái)做開(kāi)發(fā),這樣自然就會(huì)爆出這個(gè)錯(cuò)誤。
二是設(shè)置了環(huán)境變量卻又沒(méi)有設(shè)置正確。比如在X11下,設(shè)置好環(huán)境變量之后,需要重新登錄shell,如果不這樣做而直接開(kāi)始開(kāi)發(fā),一般有可能會(huì)報(bào)出這個(gè)錯(cuò)誤。
三是系統(tǒng)中同時(shí)存在多個(gè)版本的Qt。比如有Qt3和Qt4共存,有多個(gè)不同版本Qt4存在,這樣就需要考慮一是清理一下環(huán)境,使用一個(gè)“純凈”的Qt4環(huán)境;1是如果在Windows上,可以思考是否有必要同時(shí)存在這么多的版本,如果沒(méi)有實(shí)在的必要,統(tǒng)一即可,當(dāng)然這也是在打造一個(gè)“純凈”的Qt4環(huán)境;2是如果是在X11上,由于Qt3的存在有可能是系統(tǒng)的需要,系統(tǒng)中有好多的包是依賴(lài)Qt3的,那么要不每次在不同的Qt版本間切換時(shí),就變更一下環(huán)境變量的設(shè)定,要么為各個(gè)Qt版本設(shè)定為不同的用戶(hù)使用,每個(gè)用戶(hù)都有唯一的環(huán)境了;要么就是使用腳本,做法是為每個(gè)qt版本寫(xiě)設(shè)置環(huán)境變量的腳本, 僅在需要的時(shí)候?qū)Ξ?dāng)前shell設(shè)置環(huán)境,這種做法對(duì)于初學(xué)者而言有一定難度,但是效果還是比較好的。
好了,這個(gè)問(wèn)題我想大概總結(jié)的比較清楚了,供大家參考,如果還有更多的情況,也請(qǐng)補(bǔ)充,我們共同找到最佳的解決方案。
?
?
Qt4.3.5-X11-交叉編譯平臺(tái)的搭建、移植詳解
http://linux.chinaunix.net/techdoc/develop/2009/04/26/1109010.shtml
?
首先我們要知道的是Qt平臺(tái)有Pc開(kāi)發(fā)平臺(tái),(以本人所裝的Redhat9linux/Qt4.3.5/arm-3.4.1版本為例)
一、Qt嵌入式開(kāi)發(fā)平臺(tái)的建立
概述:Qt嵌入式開(kāi)發(fā)平臺(tái)包括:
1、Qt-X11開(kāi)發(fā)平臺(tái):(即為我們平時(shí)開(kāi)發(fā)Qt應(yīng)用程序時(shí)使用的系統(tǒng)平臺(tái))。
2、QtopiaCore-4.3.5開(kāi)發(fā)平臺(tái)(即framebuffer):該平臺(tái)可以讓Qt程序在pc機(jī)上模擬在嵌入式平臺(tái)的運(yùn)行情況,一般在QtopiaCore上模擬運(yùn)行成功后才,進(jìn)行交叉編譯。
3、QtopiaCore-4.3.5-arm交叉編譯平臺(tái):在此平臺(tái)下編譯通過(guò)的Qt程序就可以移植到arm板上運(yùn)行了。
step1:
?? 建立Pc開(kāi)發(fā)平臺(tái)(x11、redhat9的桌面就屬于X11):
?? 下載Qt4.3.5pc開(kāi)發(fā)包qt-x11-opensource-src-4.3.5.tar.gz
?? #tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
?? #cd Qt-4.3.5
?? #./configure??? //
?? #make install?? //此過(guò)程需要3-8小時(shí)
?? 安裝好后,系統(tǒng)默認(rèn)安裝在/usr/local/Trolltech/Qt-4.3.5目錄下
?? 檢查環(huán)境變量:
?? #which qmake??
????
step2:
?? 建立QtopiaCore-4.3.5編譯平臺(tái)(此時(shí)編譯器仍然用的是默認(rèn)的gcc)
?? 此平臺(tái)下的安裝包原碼包和X11平臺(tái)是一樣的,只是configure時(shí)配置不同
?? #tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
?? #cd Qt-4.3.5
?? #./configure -embedded x86 -qvbf -no-openssl? //注意幾個(gè)選項(xiàng)表示,以qvfb表示??? -no-openssl表示不需要認(rèn)證,否則會(huì)安裝過(guò)程中一直叫你輸入yes確認(rèn)
?? #make install???????? //此過(guò)程需要3-8個(gè)小時(shí)
?? 安裝完成后usr目錄多了一個(gè)文件夾/usr/local/Trolltech/QtopiaCore-4.3.5就表示安裝成功了
?
step3:
?? QtoptiaCore-4.3.5-arm交叉編譯平臺(tái)的建立(此時(shí)不是用系統(tǒng)默認(rèn)的gcc來(lái)編譯了)
?? 此平臺(tái)下的安裝源碼包X11平臺(tái)是一樣的,只是configure時(shí)配置不同
?? #tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
?? #cd Qt-4.3.5
?? #./configure -embedded arm?? //注意幾個(gè)選項(xiàng),必須加上 -embedded arm選項(xiàng)
?? #make install???????? //此過(guò)程需要3-8個(gè)小時(shí)
?? 安裝完成后usr目錄多了一個(gè)文件夾/usr/local/Trolltech/QtopiaCore-4.3.5-arm就表示安裝成功了
??
step4:
?? 設(shè)置環(huán)境變量:環(huán)境變量的設(shè)法總的說(shuō)來(lái)有4種(export、profile、.bashrc、.bashrc_profile)具體看自己情況來(lái)定
?? #vi /root/.bash_profile? //在環(huán)境變量的最前面加上一句:PATH=/usr/local/Trolltech/QtopiaCore-4.3.5-arm/bin:$PATH
?? #source /root/.bash-Profile?? //使環(huán)境變量生效
??
?? 好了平臺(tái)已經(jīng)搭建好了,可以用他來(lái)編譯Qt程序了
??
step5:
?? 用QtopiaCore-4.3.5-arm來(lái)進(jìn)行交叉編譯
?? #qmake -v? //檢查自己的qt環(huán)境變量是否正確,如果不正確的話(huà),就返回第4步
?? #cd myqtprogram?? //進(jìn)入自己寫(xiě)的qt程序
?? #qmake -project?? //根QtX11環(huán)境一樣編譯
?? #qmake
?? #./myqtprogram??? //運(yùn)行程序
??
step6:
?? 察看自己寫(xiě)的Qt程序需要用到哪些庫(kù)文件資源。
?? #arm-linux-readelf -a -myqtprogram | grep Shared? //Shared首字母大寫(xiě);
??
step7:
?? 拷貝庫(kù)文件:
?? 根據(jù)上一步提示把Qt程序要用到的資源文件拷到自己制作的根文件系統(tǒng)中,以下是按本人寫(xiě)的Qt程序所需要的庫(kù)寫(xiě)的
?? 將程序移植到arm板運(yùn)行,根文件系統(tǒng)root.cramfs和kernel的制作在這里就不細(xì)說(shuō)了,本人用的是自己早做好的qt-root文件系統(tǒng)。
?? 拷貝庫(kù)文件到自己制作的root系統(tǒng)中(注意:拷貝時(shí)一定要看看大小,千萬(wàn)不要拷到連接文件(相當(dāng)于快捷方式)了)
?? #cd qt-root
?? #cd usr/lib??? //注意這里不要進(jìn)到pc機(jī)linux的usr目錄下去了
?? #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libpng*? ./????????????????? //把圖形庫(kù)考過(guò)去,否則圖片顯示不了,強(qiáng)烈建議用png、bmp格式的圖片,用其他格式的圖片的話(huà),否則你還要自己做連接庫(kù)
?? #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtCore.so libQtGui.so? ./???? //這2個(gè)庫(kù)不用說(shuō)一定要考的
?? #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtNetwork.so? ./?????????? //和網(wǎng)絡(luò)相關(guān)的庫(kù)
?? #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libstdc++.so? ./
?? #cd ../??? //以下是在根文件系統(tǒng)qt-root/usr/local/下制增加一個(gè)Trolltech/QtopiaCore-4.3.5-arm/lib/fonts路徑目錄并添加相應(yīng)的字體文件,否則在arm板上會(huì)出錯(cuò)顯示不了字
?? #mkdir local/Trolletch
?? #mkdir local/Trolletch/Qtopia-4.3.5-arm
?? #mkdir local/Trolletch/Qtopia-4.3.5-arm/lib
?? #cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/fonts local/Trolletch/Qtopia-4.3.5-arm/lib? //注意不要拷錯(cuò)路徑了
step8:
?? 把程序下載到arm板運(yùn)行(注意:本人是用的microsoft的附件/通訊工具/超級(jí)終端連接到板子上,以下的操作對(duì)象都是在板子上了)
?? #./ln -s /dev/fb/0 /dev/fb0? //由于本人的板子上燒的root文件系統(tǒng)顯示設(shè)備名稱(chēng)和路徑都不匹配,所以只有給他做個(gè)連接了,否則運(yùn)行時(shí)會(huì)提示找不到fd0
?? #./myqtprogram -qws?? //-qws表示以服務(wù)器模式運(yùn)行
?? ok能在板子上跑起來(lái)了
轉(zhuǎn)載于:https://www.cnblogs.com/zeedmood/archive/2012/08/14/2638325.html
總結(jié)
以上是生活随笔為你收集整理的嵌入式成长轨迹34 【嵌入式学习阶段】【ARM环境调试】【QT 移植环境及简单程序示例】---补充《ok6410 Qt移植百科全书》...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。