QT4.8.5移植到HI3516平臺平臺
環境:UBUNTU 10.04LTS, GCC 4.4.1, uClibc, QT SDK 4.8.5
- 下載qt-everywhere-opensource-src-4.8.5.tar.gz, PC端和ARM端都是同一個檔案,下載地址:http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.tar.gz
2、先編譯PC端的,
1) 解壓出來,重新命名資料夾為: x86-qt-everywhere-opensource-src-4.8.5
2) 進入到x86-qt-everywhere-opensource-src-4.8.5目錄
3) 配置: ./configure
出現錯誤: Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/cjh/qt/qt-everywhere-opensource-src-4.8.5/mkspecs/linux-g++. 安裝libxtst-dev:apt-get install libxtst-dev ./configure 出現:Warning: -no-xrender will disable the QtWebkit module. 安裝libxrender-dev:apt-get install libxrender-dev ./ configure 如需重新配置,To reconfigure, run 'make confclean' and 'configure'. |
4) make,沒出現什麼問題,花了二三個小時完成。
5) sudo make install 預設裝在:/usr/local/Trolltech/Qt-4.8.5
3、編譯ARM端
1) 安裝交叉編譯器
安裝海思平臺交叉編譯器arm-hisiv100-linux
安裝目錄是/opt/hisi-linux/x86-arm/arm-hisiv100-linux
在/etc/profile檔案中新增PATH
Export PATH="/opt/hisi-linux/x86-arm/arm-hisiv100-linux/target/bin:$PATH"
確認編譯器安裝成功,arm-hisiv100-linux-gcc -v
2) 從壓縮包再解壓出來,重新命名資料夾為: arm-qt-everywhere-opensource-src-4.8.5。雖然與PC端是相同的程式碼,按理說在同一個資料夾用不同的配置也可以,但為了避免問題,還是另建一份新的檔案。而且也可以同時make,節省時間。
3) 進入到arm-qt-everywhere-opensource-src-4.8.5目錄
4) 設定交叉編譯工具鏈,修改檔案qmake.conf arm-qt-everywhere-opensource-src-4.8.5/mkspecs/linux-arm-gnueabi-g++ /qmake.conf,修改內容如下:
# modifications to g++.conf
QMAKE_CC = arm-hisiv100-linux-gcc
QMAKE_CXX = arm-hisiv100-linux-g++
QMAKE_LINK = arm-hisiv100-linux-g++
QMAKE_LINK_SHLIB = arm-hisiv100-linux-g++
# modifications to linux.conf
QMAKE_AR = arm-hisiv100-linux-ar cqs
QMAKE_OBJCOPY = arm-hisiv100-linux-objcopy
QMAKE_STRIP = arm-hisiv100-linux-strip
5) 配置:
./configure -opensource -embedded arm -host-little-endian -little-endian -static -no-cups -no-3dnow -no-script -no-webkit -no-javascript-jit -no-qt3support -nomake examples -nomake docs -xplatform /qws/mkspecs/linux-arm-gnueabi-g++
6) make ,耗時20-30分鐘
出現錯誤: qthread_unix.cpp: undefined reference to `__tls_get_addr 修改src/corelib/thread目錄下的qthread_unix.cpp檔案, 關閉HAVE_TLS巨集,再編譯。 出現錯誤 ../3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp:662: error: 'pthread_getattr_np' was not declared in this scope pthread_getattr_np在uClibc中沒有實現,不使用javascript, 暫時遮蔽了,如果用到javascript會有問題。
|
7) sudo make install, 安裝在/usr/local/Trolltech/QtEmbedded-4.8.5-arm。如果需要安裝在其他目錄,./configure -prefix path指定
8) 修改環境變數,在~/.bashrc中新增以下語句
export ARMQTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm
export PATH=$ARMQTDIR/bin:$PATH
export LD_LIBRARY_PATH=$ARMQTDIR/lib
export QMAKESPEC=$ARMQTDIR /mkspecs/linux-arm-gnueabi-g++
重新載入~/.bashrc:
source ~/.bashrc
檢查是否成功:
qmake -v
輸出以下資訊:
QMake version 2.01a
Using Qt version 4.8.5 in /usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib
9) 例子程式測試
cd /examples/dialogs/standarddialogs
/usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake -spec /usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/linux-arm-gnueabi-g++/ -o Makefile standarddialogs.pro
make
arm-linux-strip standarddialogs
upx –qqq –v standarddialogs //壓縮
好了,standarddialogs可以放到目標板上去運行了。
4、安裝Qt Creator
qt-creator 2.8.1要求ubuntu 11.10 or later,所以裝了2.7.2版本。
1) 執行安裝程式 ./qt-creator-linux-x86-opensource-2.7.2.bin,按預設配置安裝
2) 增加Compiler
指向交叉編譯器的arm-hisiv100-linux-g++
3) 增加Qt versions,分別指向剛剛編譯的二個平臺的qmake。
4) 增加Kits
PC版本的
ARM版本的