1. 程式人生 > >移植Qt5.7到4412開發板上(開發環境搭建)

移植Qt5.7到4412開發板上(開發環境搭建)

轉自:https://www.cnblogs.com/t1029901995/p/6046600.html

一、環境:

    系統:Ubuntu16.04   64位,

    開發板:訊為iTOP-4412精英版(4.7寸屏)

二、需下載的資源:    

    下載qt5.7原始碼qt-everywhere-opensource-src-5.7.0.tar.xz 
     http://download.qt.io/archive/qt/5.7/5.7.0/single/qt-everywhere-opensource-src-5.7.0.tar.xz

    下載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

三、移植

  1.安裝arm-2014.05-29-arm-none-linux-gnueabi-gcc編譯器

將下載的arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2解壓到自己的安裝目錄,這裡我選的是 /usr/local/arm 接下來就是修改環境,開啟etc/profile

vi /etc/profile

使修改生效source /etc/profile

新增 

export PATH=$PATH:/usr/local/arm/arm-2014.05/bin
export CROSS_COMPILE=arm-none-linux-gnueabi-

儲存後 更新下  source /etc/profile

控制檯輸入arm  按兩下下table後如果出現arm-none-linux-gnueabi-gcc-4.8.3  說明可以了,也可以通過

arm-none-linux-gnueabi-gcc -v  這條命令測試,如果出現一大串字母 ,最後一行是gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)  ,那就沒問題了。

  2.安裝tslib1.4

將下載的tslib1.4解壓到自己的目錄 ,我選得是自己downloads資料夾 ,解壓得到tslib1.4資料夾,在控制檯進入這個資料夾,先安裝一些東西,

sudo apt-get install autoconf

sudo apt-get install automake

sudo apt-get install libtool

安裝完之後執行 

./autogen.sh
然後
./configure CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ --host=arm-none-linux-gnueabi  --prefix=/opt/tslib1.4 ac_cv_func_malloc_0_nonnull=yes
prefix是自己的安裝目錄,自己決定。
最後 
make
sudo make install
3. 編譯Qt5.7的原始碼。
在自己的downloads資料夾解壓得到的原始碼,

進入該資料夾,開啟qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf  ,修改成下面的

	
#
# 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)

執行

./configure -release -opensource -tslib -xplatform linux-arm-gnueabi-g++ -prefix /opt/Qt-5.5.0/armv7-a -no-c++11 -no-opengl -I/opt/tslib1.4/include -L/opt/tslib1.4/lib

沒有錯誤的話 就 make && make install

到安裝資料夾下就出現了安裝的檔案

那就成功了。

嫌麻煩也可以下載已經編譯好的qt,地址:https://download.csdn.net/download/qq_42009634/10755622,然後再設定一下開發環境就可以使用了。

3.安裝qtcreator(也可以直接安裝Qt5.7-linux版,裡面就帶有qtcreator)

qt5.7地址:http://download.qt.io/archive/qt/5.7/5.7.0/

設定開發環境,如下圖

 

四 、程式測試。

將編譯好的tslib1.4 和qt整個資料夾 拷貝到開發板的/opt目錄,

修改開發板環境:vi /etc/profile

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

QT_ROOT是qt庫的目錄。更新 source /etc/profile

然後在串列埠命令窗中輸入 vi /opt/tslib1.4/etc/ts.conf 來配置觸控式螢幕 

刪除第二行前面的#就可以了,如果出錯重新開啟修改第二行,去掉空格和#

一切搞完之後就可以編寫qt程式了,將編譯後的程式用u盤複製到開發板,./program  就可以運行了,但十有八九會報錯缺少libstdc++.so  所以要複製一個libstdc++.so到lib目錄下。

五、安裝過程的一些問題:

   qt編譯時出現cannot find -lGL錯誤,參考https://blog.csdn.net/qq_42009634/article/details/83583559

   使用arm-none-linux-gnueabi-gcc -v 提示未找到檔案,是因為缺少32位庫,安裝  lib32z1 或者 lib32ncurses5

使用命令 sudo apt-get install  lib32z1 或者 sudo apt-get install lib32ncurses5 安裝