1. 程式人生 > >QT4.8.5移植到HI3516平臺平臺

QT4.8.5移植到HI3516平臺平臺

環境:UBUNTU 10.04LTS, GCC 4.4.1, uClibc, QT SDK 4.8.5

  1. 下載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++

QT4.8.5移植到HI3516平臺

    3) 增加Qt versions,分別指向剛剛編譯的二個平臺的qmake

 

    4) 增加Kits

PC版本的

QT4.8.5移植到HI3516平臺

 

ARM版本的

QT4.8.5移植到HI3516平臺