移植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 |
|
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 安裝