移植Qt4.8.7到ARM40-A5
主機平臺:Ubuntu 16.04 LTS(x64)
目標平臺:ARM40-A5
Qt版本:Qt4.8.7
ARM GCC編譯工具鏈:
arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
----------## Qt移植步驟 ##
1、了解Ubuntu,啟動Terminal
2、下載和安裝ARM GCC編譯工具鏈
3、下載和安裝tslib 和Qt
4、配置qt-creator
5、編寫hello world 示例程序
6、移植Qt到ARM40-A5
一、啟動Ubuntu
Ubuntu默認已安裝完成,這里不再演示如何安裝Ubuntu。如需要安裝Ubuntu,請出門左轉,自行谷歌
1.1、啟動Ubuntu后確認你的系統版本
1.2、按下Ctrl + Alt + T 啟動terminal(終端)
啟用root權限將當前賬戶ubt1604加入到sudo 的列表中
$ su - ;切換到root賬戶,輸入root的密碼
$ vim /etc/sudoers ;編輯sudoers 文件
$ exit ;退出root
按下“A”,打開vim文本編輯模式,添加
”ubt1604 ALL=(ALL)NOPASSWD:ALL“
按下Esc ,退出vim文本編輯模式,輸入“ :wq! ”,保存退出
ubt1604已獲得root權限
1.3、下載和安裝ARM GCC編譯工具鏈
第三方網站下載(推薦):http://www.veryarm.com/arm-none-linux-gnueabi-gcc
官方網站下載:http://sourcery.mentor.com/public/gnu_toolchain/arm-none-linux-gnueabi/
在當前賬戶的主目錄下建立目錄qtsoft,將下載到的arm gcc編譯工具鏈存放在qtsoft目錄中
$ mkdir qtsoft ;創建qtsoft目錄
$ ls ;查看qtsoft目錄是否創建
$ cd qtsoft ;切換到qtsoft目錄中
$ cp ~/arm-2014.05* ./ ;拷貝arm gcc編譯工具鏈到qtsoft目錄中
$ ls ;查看qtsoft目錄下已有文件
將arm gcc編譯工具鏈解壓到/opt目錄下
$ sudo tar xjvf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 -C /opt $ ls /opt ;查看是否解壓到/opt目錄下
添加arm-2014.05編譯器的路徑到當前賬戶ubt1604的環境變量中
進入到/opt/arm-2014.05/bin目錄下,可以看到arm gcc 的編譯器文件列表
回到當前賬戶目錄下,編輯 .bashrc 文件
在文件的最后添加" export PATH=/opt/arm-2014.05/bin:$PATH ",保存退出
使其環境變量生效,查看arm gcc 的編譯器版本號為4.8.3
$ cd ~ ;當前賬戶主目錄
$ vim .bashrc ;編輯文件
$ source .bashrc ;使環境變量生效
$ echo $PATH ;查看環境變量
$ arm-none-linux-gnueabi-gcc -v ;查看arm gcc 版本
1.4、下載和安裝tslib 和 Qt
tslib官方下載(需要翻墻):https://github.com/kergoth/tslib
如果沒有VPN,請出門左轉,自行谷歌tslib,這里不再提供第三方的下載鏈接
$ git clone https://github.com/kergoth/tslib.git ;下載tslib
如果提示沒有安裝git ,請自行安裝git
$ sudo apt-get install git
編譯tslib之前,要先安裝automake、libtool 兩個工具;
并在/opt目錄下新建tslib目錄;
切換到qtsoft目錄下的tslib目錄并查看
$ sudo apt-get install automake libtool
$ sudo mkdir /opt/tslib
$ cd ~/qtsoft/tslib
$ ls
執行如下步驟,編譯安裝tslib
$ ./autogen.sh
$ ./configure CC=arm-none-linux-gnueabi-gcc \CXX=arm-none-linux-gnueabi-g++ \--prefix=/opt/tslib \--host=arm-none-linux-gnueabi \ac_cv_func_malloc_0_nonnull=yes$ make&&sudo make install
注:如果報錯誤,大部分都是arm gcc的路徑不正確,請仔細檢查;
下面的網址有詳細的錯誤處理方法,經過試驗,真實可用
請參考http://blog.csdn.net/flfihpv259/article/details/51496959
進入下一步之前,先將/opt/tslib/etc/ts.conf文件第二行“#module_raw input”注釋去掉,變為“module_raw input”,注意一定要頂格,至此tslib 安裝完畢。
Qt4.8.7官方下載鏈接:http://download.qt.io/official_releases/qt/4.8/4.8.7/
將下載的Qt4.8.7復制到qtsoft目錄下,如下圖所示;
在終端中輸入 ls 命令,也可以看得到,如下圖所示:
準備編譯安裝Qt4.8.7
回到qtsoft 目錄下,將qt進行解壓,查看qt-everywhere-opensource-src-4.8.7目錄
的文件
$ cd ~/qtsoft
$ tar xzvf qt-everywhere-opensource-src-4.8.7.tar.gz
$ ls
$ cd qt-everywhere-opensource-src-4.8.7
$ ls
編輯qmake.conf文件
$ vim mkspecs/qws/linux-arm-g++/qmake.conf
添加以下內容,注意arm gcc編譯器的路徑;編輯結束,保存并退出vim
#
# qmake configuration for building with arm-linux-g++
#include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)# modifications to g++.conf
QMAKE_CC = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-gcc -lts
QMAKE_CXX = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++ -lts
QMAKE_LINK_SHLIB = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-g++ -lts# modifications to linux.conf
QMAKE_AR = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-objcopy
QMAKE_STRIP = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-stripload(qt_config)
~
~
開始編譯Qt4.8.7,首先在/opt目錄下創建qte4.8.7目錄,然后執行以下操作
$ sudo mkdir /opt/qte4.8.7
$ ls /opt
$ sudo ./configure \--prefix=/opt/qte4.8.7 \-opensource \-release \-static \-Declarative \-fast \-no-largefile \-qt-sql-sqlite \-qt3support \-exceptions \-xmlpatterns \-no-script \-no-scripttools \-no-glib \-no-phonon \-svg \-no-webkit \-qt-zlib \-qt-libtiff \-qt-libpng \-qt-libjpeg \-make libs \-nomake tools \-nomake examples \-nomake docs \-nomake demos \-no-nis \-no-cups \-no-iconv \-no-dbus \-xplatform qws/linux-arm-g++ \-embedded arm \-little-endian \-qt-freetype \-depths 16,24,32 \-qt-gfx-linuxfb \-no-gfx-transformed \-no-gfx-multiscreen \-no-gfx-vnc \-no-gfx-qvfb \-qt-kbd-linuxinput \-qt-kbd-tty \-no-kbd-qvfb \-armfpa \-optimized-qmake \-no-mouse-qvfb \-qt-mouse-linuxtp \-qt-mouse-tslib \-DQT_QLOCALE_USES_FCVT \-DQT_NO_QWS_CURSOR \-pch \-I/opt/tslib/include \-L/opt/tslib/lib \-confirm-license
$ sudo make -j 4
編譯的過程中,如果有報錯誤,請檢查你的arm gcc 的安裝路徑是否正確,具體的請谷歌。 -j 4 : 使用4個CPU核進行并行編譯,具體的還是要看主機的CPU的核心數;默認make 時,只使用1個CPU核心,單核心CPU編譯Qt時間好久的,一部電影的時間過去了。。。
編譯完成后,進行安裝Qt4.8.7 ,查看qmake版本
$ sudo make install
$ ls /opt/qte4.8.7/
$ qmake -v
根據報錯分析:
qtchooser默認選擇路徑中沒有指向qmake路徑,編輯下面的這個文件
$ sudo vim /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
$ qmake -v
將下圖第一句改成qmake的路徑:/opt/qte4.8.7/bin
更改后如下圖所示
查看qmake版本
回到當前賬戶的主目錄下,將下面的文本內容添加到 .bashrc文件的末尾。
保存退出,并使其環境變量生效;Qt4.8.7已經安裝結束了
$ cd ~
$ vim .bashrc
$ source .bashrc
export PATH=$PATH:/opt/qte4.8.7/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/qte4.8.7/lib