QT5.7交叉編譯安裝到arm(好多系列文章)


以下采用的系統為ubuntu16.04,開發板為迅為iTOP4412,4.3寸屏。 
下載qt5.7源碼qt-everywhere-opensource-src-5.7.0.tar.xz 
http://www.download3k.com/Install-Qt.html

下載ARM交叉編譯工具arm-2014.05-29-arm-none-Linux-gnueabi-i686-pc-linux-gnu.tar.bz2 
http://www.veryarm.com/arm-none-linux-gnueabi-gcc

下載tslib1.4 
http://vdisk.weibo.com/s/AcUHxOERV2k0?sudaref=www.baidu.com

arm交叉編譯器arm-2014的安裝

將“arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2”解壓到Ubuntu 系統的文件夾“/usr/local/arm”中。 
然后修改環境變量,切換到home目錄,然后輸入命令“vim .bashrc”,打開設置環境變量的文件“.bashrc”,將環境變量修改為“export PATH=$PATH:/usr/local/arm/arm-2014.05/bin” 
保存退出,然后更新一下環境變量,輸入命令“source .bashrc”。

source .bashrc
  • 1
  • 1

接着測試一下,編譯器路徑設置的對不對。如下圖,在Ubuntu 命令行中輸入命令”arm”, 
然后按鍵盤”Tab”,出現編譯器“arm-none-linux-gnueabi-gcc-4.8.2”,這就說明編譯 
器路徑設置正確。

交叉編譯tslib1.4

對觸摸屏信號的獲取、校正、濾波處理,均采用開源的tslib,本文采用的tslib版本為最新的tslib1.4(可以從本文提供的鏈接中下載tslib1.4)。 
1.將下載好的tslib1.4拷貝到/home/lz/transplant目錄下(可以根據自己的系統選擇某一目錄),然后執行解壓縮命令

tar -vxf tslib-1.4.tar.gz
  • 1
  • 1

切換到tslib目錄:

cd tslib
  • 1
  • 1

安裝交叉編譯tslib必須的一些工具(可以先查看是否已安裝,ubuntu16.04自帶這些工具,可跳過)

sudo apt-get install autoconf sudo apt-get install automake sudo apt-get install libtool
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

2.利用腳本寫編譯過程 
在tslib文件夾下新建文件configTslib14.sh

vi configTslib14.sh
  • 1
  • 1

內容如下:

#!/bin/sh make clean && make distclean echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache CC=/usr/local/arm/arm-2014.05/bin/arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/tslib1.4 --cache-file=arm-linux.cache make && make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

然后運行configTslib14.sh

./configTslib14.sh
  • 1
  • 1

執行結束后,我們查看一下是否安裝成功,執行命令:

ls /opt/tslib1.4
  • 1
  • 1

如果出現bin,etc,include,lib這4個目錄,如下圖所示,說明交叉編譯並安裝tslib成功。 

交叉編譯QT5.7.0

將下載的qt-everywhere-opensource-src-5.7.0.tar.gz執行如下命令解壓:

tar -vxf qt-everywhere-opensource-src-5.7.0.tar.gz
  • 1
  • 1
cd qt-everywhere-opensource-src-5.7.0
  • 1
  • 1

修改交叉編譯架構用到的信息:

gedit qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
  • 1
  • 1

修改如下圖所示:

# # qmake configuration for building with arm-linux-gnueabi-g++ # MAKEFILE_GENERATOR = UNIX CONFIG += incremental QMAKE_INCREMENTAL_STYLE = sublib QT_QPA_DEFAULT_PLATFORM = linux #eglfs QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a include(../common/linux.conf) include(../common/gcc-base-unix.conf) include(../common/g++-unix.conf) # modifications to g++.conf QMAKE_CC = arm-none-linux-gnueabi-gcc QMAKE_CXX = arm-none-linux-gnueabi-g++ QMAKE_LINK = arm-none-linux-gnueabi-g++ QMAKE_LINK_SHLIB = arm-none-linux-gnueabi-g++ # modifications to linux.conf QMAKE_AR = arm-none-linux-gnueabi-ar cqs QMAKE_OBJCOPY = arm-none-linux-gnueabi-objcopy QMAKE_NM = arm-none-linux-gnueabi-nm -P QMAKE_STRIP = arm-none-linux-gnueabi-strip load(qt_config)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

創建一個腳本文件,用於生成Makefile,執行命令

gedit autoConfigure.sh
  • 1
  • 1

輸入下面內容並保存:

#!/bin/sh
./configure \
-v \ -prefix /opt/qt-5.7.0 \ -release \ -opensource \ -no-accessibility -make libs \ -xplatform linux-arm-gnueabi-g++ \ -optimized-qmake \ -pch \ -qt-sql-sqlite \ -qt-zlib \ -tslib \ -no-opengl \ -no-sse2 \ -no-openssl \ -no-nis \ -no-cups \ -no-glib \ -no-pkg-config \ -no-separate-debug-info \ -I/opt/tslib1.4/include -L/opt/tslib1.4/lib
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

其中-prefix /opt/qt-5.7.0代表我們編譯完QT5.4.1后要安裝地址;-tslib代表QT對觸摸板的支持,-I 和 -L后面分別為為第一步編譯tslib的include和lib的安裝目錄。 
執行命令:

chmod 777 qt.configure.sh ./autoConfigure.sh
  • 1
  • 2
  • 1
  • 2

上述命令自動生成Makefile文件。 
執行命令啟動編譯:

make
  • 1
  • 1

編譯大概2個小時。 
編譯結束后,執行安裝命令:

sudo make install
  • 1
  • 1

我們切換到目標目錄下看看是否安裝成功:

cd /opt/qt-5.7.0 ls
  • 1
  • 2
  • 1
  • 2

如圖所示:

將/opt/qt-5.7.0和/opt/tslib1.4 拷貝到開發板的文件系統中對應的目錄中。

設置QT的交叉編譯環境

安裝qtcreator 
進入qtcreator開發環境 
在菜單中選擇Tools——Options,在彈出的對話框中,選擇Build & Run,選擇標簽Compilers,按下圖設置,選擇C++交叉編譯器,如下圖所示: 

切換到Qt Versions標簽,點擊“Add”按鈕,選擇qmake,如圖所示: 

選擇完成,按“OK”按鈕,設置如圖所示: 
切換到Kits標簽,點擊“Add”按鈕,然后設置如下圖所示: 

在4412開發板上配置tslib並交叉編譯一個能夠在4412開發板上運行的QT應用程序

把字庫Ubuntu_L.ttf 等字庫拷貝到 /opt/qt-5.7.0/lib/fonts

在開發板串口命令窗口中輸入:

vi /etc/profile
  • 1
  • 1

如下圖所示: 
這里寫圖片描述 
將其修改為以下內容

export TSLIB_ROOT=/opt/tslib1.4 export QT_ROOT=/opt/qt-5.7.0 export TSLIB_TSDEVICE=/dev/input/event2 export TSLIB_TSEVENTTYPE=input export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts export TSLIB_CONSOLEDEVICE=none export TSLIB_FBDEVICE=/dev/fb0 export QWS_MOUSE_PROTO=tslib:/dev/input/event2 export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib:$TSLIB_ROOT/lib/ export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0 export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts export QT_QPA_GENERIC_PLUGINS=tslib
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

保存退出,執行命令(一定要執行,否則可能報錯):

source /etc/profile
  • 1
  • 1

然后在串口命令窗中輸入 vi /opt/tslib1.4/etc/ts.conf 來配置觸摸屏 
這里寫圖片描述 
把第二行的注釋去掉,把ts設置成輸入模式(注意把前面的空格也去掉) 

下面編寫測試程序來測試開發板上 
打開qtcreator,新建項目,拖幾個按鈕上去,如下圖所示 

編譯得到可執行程序untitled,查看一下,可以看到其信息顯示為arm平台,如下圖所示 

將untitled拷貝到開發板中文件系統的/bin目錄,運行該程序。

[root@iTOP-4412]# /bin/untitled 
  • 1
  • 1

看一下板子: 

 

http://blog.csdn.net/u012175418/article/details/52704734

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM