詳解QT安裝全過程
QT安裝全過程是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)QT的應(yīng)用,本文主要是來學(xué)習(xí)QT安裝過程,具體內(nèi)容的實現(xiàn)來看本文詳解。
一、qt的源碼編譯
1、編譯觸摸屏軟件tslib
解壓tslib-1.4.tar.gz
- Tar-zxvftslib-1.4.tar.gz-C/usr/local
- cdtslib
- apt-getinstalllibtool
- apt-getinstallautoconf
- apt-getinstallg++
在tslib目錄下
- ./autogen.sh
- CC=arm-linux-gcc
- ####echo"ac_cv_func_malloc_0_nonnull=yes">arm-linux.cache//###表示注釋掉了,第三句是前兩句的結(jié)合
- ####./configure--prefix=/opt/ts/--host=arm-linux--cache-file=arm-linux.cache
- ./configure--prefix=/opt/ts/--host=arm-linuxac_cv_func_malloc_0_nonnull=yes
打開tests/ts_calibrate.c,修改兩個open,加上第三個參數(shù)0//atline227229
- make
- makeinstall
2、安裝qt--X11
- apt-getinstalllibX11-devlibXext-devlibXtst-dev
- apt-getinstallxorg-dev
解壓tarzxvfqt-everywhere-opensource-src-4.6.3.tar.gz-C/usr/local/
- mvqt-everywhere-opensource-src-4.6.3qt-everywhere-opensource-src-4.6.3-x11
- ./configure-nomakeexamples-nomakedemos
- make&&makeinstall
該過程會出現(xiàn)讓你選擇commercial或者open版本==》輸入o
然后詢問是否接受license==》輸入yes
- make&&makeinstall
//三個小時左右,該干嘛干嘛去
3、安裝qt--x86
- #tarxzvfqt-everywhere-opensource-src-4.6.3.tar.gz-C/usr/local
- #mvqt-everywhere-opensource-src-4.6.3qt-everywhere-opensource-src-4.6.3-x86
- #cdqt-everywhere-opensource-src-4.6.3-x86
- #./configure-prefix/usr/local/Trolltech/Qt-4.6.3-x86-nomakeexamples-nomakedemos
- -nomakedocs-nomaketools-embeddedx86-qvfb
- #make&&makeinstall
4、安裝qt--arm
- ./configure-prefix/usr/local/Trolltech/Qt-4.6.3-arm-release-shared-fast-xplatformqws/linux
- -arm-g++-embeddedarm-depths16-no-qvfb-no-qt3support-qt-sql-sqlite-qt
- -zlib-qt-libpng-qt-freetype-qt-mouse-tslib-no-mouse-pc-no-mouse-linuxtp
- -nomakeexamples-nomakedemos-nomakedocs-nomaketools-I/opt/ts/include-L/opt/ts/lib
有錯,使用下面的
- ./configure\
- -prefix/usr/local/Trolltech/Qt-4.6.3-arm\
- -release-shared-fast\
- -xplatformqws/linux-arm-g++-embeddedarm\
- -depths16-no-qvfb\
- -no-qt3support-qt-sql-sqlite-qt-zlib-qt-libpng-qt-freetype\
- -qt-mouse-tslib-no-mouse-pc-no-mouse-linuxtp\
- -nomakeexamples-nomakedemos-nomakedocs-nomaketools\
- -I/opt/ts/include-L/opt/ts/lib
執(zhí)行完configure命令之后,還需要修改三個文件:
- cdqt-embeded-opensource-src-4.6.3-arm
1)該目錄下/src/3rdparty/freetype/include/freetype/config/ftconfig.h330行
- "orr%0,%0,%2,lsl#16\n\t"/*%0|=%2<<16*/
- //原來:"orr%0,%2,lsl#16\n\t"
2)/src/3rdparty/webkit/WebCore/Makefile
14行和15行,分別在-fPIC$(DEFINES)之前加入-D__ARM_ARCH_4T__(即CFLAGS/CXXFLAGS)
3) /src/script/Makefile
14行和15行-D__ARM_ARCH_4T__(同上)
- make&&makeinstall
二、環(huán)境搭建(Trolltech)
1、設(shè)置環(huán)境變量Qt-4.6.3
進入/usr/local/Trolltech/Qt-4.6.3目錄
visetenv.sh或者sudogeditsetenv.sh
在文件中加入
- PATH=/usr/local/Trolltech/Qt-4.6.3/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3/lib:$LD_LIBRARY_PATH
保存退出
- chmod777setenv.sh
2、設(shè)置環(huán)境變量Qt-4.6.3-x86
進入/usr/local/Trolltech/Qt-4.6.3-x86目錄
visetenv.sh或者sudogeditsetenv.sh
在文件中加入
- QTEDIR=/usr/local/Trolltech/Qt-4.6.3-x86
- PATH=/usr/local/Trolltech/Qt-4.6.3-x86/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3-x86/lib:$LD_LIBRARY_PATH
保存退出
- chmod777setenv.sh
3、設(shè)置環(huán)境變量Qt-4.6.3-arm
進入/usr/local/Trolltech/Qt-4.6.3-arm目錄
visetenv.sh或者sudogeditsetenv.sh
在文件中加入
- QTEDIR=/usr/local/Trolltech/Qt-4.6.3-arm
- PATH=/usr/local/Trolltech/Qt-4.6.3-arm/bin:$PATH
- LD_LIBRARY_PATH=/usr/local/Trolltech/Qt-4.6.3-arm/lib:$LD_LIBRARY_PATH
保存退出
- chmod777setenv.sh
三、編譯qvfb
- cdqt-everywhere-opensource-4.6.3-x11/tools/qvfb
- #####/usr/local/qt-everywhere-opensource-src-4.6.3-x11/tools/qvfb
- make
--會在qt-everywhere-opensource-4.6.3-x11/bin下生成qvfb,
我們將它copy至/usr/local/Trolltech/Qt-4.6.3-x86/bin下
- cpqvfb/usr/local/Trolltech/Qt-4.6.3-x86/bin
運行測試()
運行x86下setenv.sh腳本文件。sourcesetenv.sh(word里大寫S不對)命令行輸入qvfb&(&后臺運行)
對Qtcreator工程文件qmake文件名.pro然后make生成可執(zhí)行文件
- ./可執(zhí)行文件-qws
- (示例文件可以去qt-everywhere-opensource-4.6.3-x86/examples或者demos里面找)
四、安裝QTCreator
- chmod777qt-sdk-linux-x86-opensource_2010.02.bin
- cpqt-sdk-linux-x86-opensource_2010.02.bin/opt
- ./qt-sdk-linux-x86-opensource_2010.02.bin默認安裝即可
六、在ubuntu中安裝NFS服務(wù),在開發(fā)內(nèi)核和文件系統(tǒng)時很方便,可以直接采用NFS啟動內(nèi)核和文件系統(tǒng)。安裝如下:
1、安裝
#apt-getinstallnfs-kernel-server
2、將NFS端口是否打開
- #netstat-tl
若NFS端口處于LISTEN狀態(tài),則打開
3、配置NFS服務(wù)器
- #vim/etc/exports
在***一行加入:/work*(rw,sync,no_root_squash)其中:/work為共享目錄,*為任意IP地址都可以訪問,no_root_squash表示任意用戶都可以訪問
4、重啟NFS服務(wù)
- #/etc/init.d/nfs-kernel-serverrestart
5、查看NFS服務(wù)器當前的工作狀態(tài)
#/etc/init.d/nfs-kernel-serverstatus
若顯示running則工作正常
安裝結(jié)束
#p#
五、ARM板上配置環(huán)境:(板子和電腦之間)
編輯目標環(huán)境下(/utulinux2.6.24/s3c2440_recover/etc)的/etc/profile,在文件后面添加如下內(nèi)容:(和ppt上的有少許區(qū)別,主要是路徑上)
- exportLD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH
- exportQTDIR=/usr/local/Trolltech/Qt-4.6.3-arm
- exportQPEDIR=$QTDIR
- exportT_ROOT=/opt/ts
- exportPATH=$T_ROOT/bin:$PATH
- exportLD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH
- exportTSLIB_CONSOLEDEVICE=none
- exportTSLIB_FBDEVICE=/dev/fb0
- exportTSLIB_TSDEVICE=/dev/event0
- exportTSLIB_PLUGINDIR=$T_ROOT/lib/ts
- exportTSLIB_CONFFILE=$T_ROOT/etc/ts.conf
- exportTSLIB_CALIBFILE=/etc/pointercal
- exportQWS_KEYBOARD=USB:/dev/input/event1
- exportQWS_MOUSE_PROTO=Tslib:/dev/event0
- exportQWS_DISPLAY=LinuxFb:mmWidth45:mmHeight60:0
- exportQWS_SIZE=320x240
六.在目標環(huán)境中建立與編譯QT-arm一樣的路徑:(目標路徑/utulinux2.6.24/s3c2440_recover)
- mkdir/usr/local/Trolltech/Qt-4.6.3-arm
- cd/usr/local/Trolltech/Qt-4.6.3-arm
- mkdirlib/
- mkdirlib/fonts/
把以下的庫文件從編譯主機中的lib復(fù)制目錄中的四個庫文件復(fù)制到目標板的/usr/local/Qt-4.6.3-arm/lib
- libQtCore.so.4.6.3
- libQtGui.so.4.6.3
- libQtNetwork.so.4.6.3
- libQtSql.so.4.6.3
為每個庫文件創(chuàng)建3個連接:*.so,*.so.4,*.so.4.6
- ln–slibQtCore.so.4.6.3libQtCore.so
- ln–slibQtCore.so.4.6.3libQtCore.so.4
- ln–slibQtCore.so.4.6.3libQtCore.so.4.6
(重復(fù)其余三個)
常用字庫文件從/usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts/復(fù)制到目標板的
- /utulinux2.6.24/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts
- cp-rf/usr/local/Trolltech/Qt-4.6.3-arm/lib/fonts/\/utulinux2.6.24/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib
七、
1:將/opt下交叉編譯好的tslib文件cp到開發(fā)板中對應(yīng)的同樣目錄下,其中的include目錄和lib下的pkgconfig目錄可以不拷貝。
進入到/opt復(fù)制ts目錄
cp-rfts/utulinux2.6.24/s3c2440_recover/opt/
2:檢查/utulinux2.6.24/s3c2440_recover/opt/
ts/etc/ts.conf內(nèi)容加入module_rawinput:
module_rawinput(必須頂格,不然bug)
- modulepthrespmin=1
- modulevariancedelta=30
- moduledejitterdelta=100
- modulelinear
八.cd/usr/local/Trolltech/Qt-4.6.3-arm/mkspecs/default
//這個問題找了好久,結(jié)果發(fā)現(xiàn)是這里目錄錯了,應(yīng)該是
cd/usr/local/Trolltech/Qt-4.6.3-arm/mkspecs/qws/linux-arm-g++
不然后面qmake時會出錯
修改qmake配置文件:
viqmake.conf打開文件中在QMAKE_LINK_SHLIB此行下面加入一行:
QMAKE_LFLAGS+=-Wl-lts加入后如下:
- #modificationstog++.conf
- QMAKE_CC=arm-linux-gcc
- QMAKE_CXX=arm-linux-g++
- QMAKE_LINK=arm-linux-g++
- QMAKE_LINK_SHLIB=arm-linux-g++
- QMAKE_LFLAGS+=-Wl-lts
- #modificationstolinux.conf
- QMAKE_AR=arm-linux-arcqs
- QMAKE_OBJCOPY=arm-linux-objcopy
- QMAKE_STRIP=arm-linux-strip
- load(qt_config)
九.將例子hellowrld拷貝到/utulinux2.6.24/s3c2440_recover/usr下測試
在串口終端進入文件夾中./helloworld-qws
//這里講得不清楚,是這樣的,因為要在arm板上運行,所以要用Qt-4.6.3-arm中對應(yīng)的qmake編譯
先要執(zhí)行該文件中的setenv.sh
- source/usr/local/Trolltech/Qt-4.6.3-arm/setenv.sh
執(zhí)行后環(huán)境變量就在本終端中有效,不要切換終端qmake
然后找到要編譯的項目qmakename.pro
- make
生成和項目名一樣的可執(zhí)行文件,該文件可以在arm板上執(zhí)行
CRT中輸入./name-qws即可
十.錯誤解決方法:
提示:.
- /helloworld:errorwhileloadingsharedlibraries:libts-0.0.so.0:cannotopen
- sharedobjectfile:Nosuchfileordirectory
Ts觸摸屏驅(qū)動有問題,解決方法看路徑是否對。
//這里說的路徑主要是說/utulinux2.6.24/s3c2440_recover/etc/profile中T_ROOT=/opt/ts設(shè)置是否正確
錯誤:
- ./helloworld:errorwhileloadingsharedlibraries:libstdc++.so.6:cannotopen
- sharedobjectfile:Nosuchfileordirectory
對應(yīng)文件拷貝鏈接:
進入目標系統(tǒng)lib目錄下://這種類似的報錯可以到ubuntu中把Qt-4.6.3-arm/lib下的文件拷貝過來,軟連接的話自己建
- ln-slibstdc++.so.60.0.3libstdc++.so.6
錯誤:
- CannotcreateQtforEmbeddedLinuxdatadirectory:/tmp/qtembedded-0Aborted
在目標板根目錄下創(chuàng)建文件夾:
mkdirtmp
十一.重啟nfs服務(wù)://這里不一定需要
- /etc/init.d/nfs-kernel-serverrestart
重啟板子reboot
校準:(遇到錯誤提示如下)
- Couldnotreadcalibration:"/etc/pointercal"
超級終端命令行輸入:ts_calibrate運行
在觸摸屏上點擊鼠標跟蹤。
重新再運行helloworld
十二、想要板子開機運行程序要掛載電腦端的utulinux目錄
首先啟動utubootloader運行:setenvbootargs
saveenv啟動后運行:
- mount-tnfs192.168.1.200:/utulinux2.6.24/s3c2440_recover/media/nfs
(掛載不了重啟板子reboot)
小結(jié):詳解QT安裝全過程的內(nèi)容介紹完了,希望通過本文的QT安裝的內(nèi)容學(xué)習(xí)能對你有所幫助!