搞了幾天,終於把Qt5.7移植到4412上,下面是一些自己移植過程中的記錄,希望能幫到其他人。
一、需要下載的文件,
下載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
桌面系統是ubuntu14.04 32位 ,開發板目前搭載的系統是來自訊為的最小Linux系統。
二、移植
1.安裝arm交叉編譯器arm-2014,將下載的arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2解壓到自己的安裝目錄,這里我選的是 /usr/local/arm
下來就是修改環境,打開etc/profile
vi /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-crearor3.3.0
從http://mirrors.hust.edu.cn/qtproject/archive/qt/ 下載需要的版本,直接運行 ,一路 next 下去就行了。
打開安裝的qtcreator ,設置開發環境,如下圖
OK 用過windows版本的qt這應該沒什么難度。
四 、程序測試。
將編譯好的tslib1.4 和qt整個文件夾 拷貝到開發板的/opt目錄,
修改開發板環境:vi /etc/profile
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目錄下,到此,搞定。
下面是我用的libstdc++.so。
http://pan.baidu.com/s/1nvJbRB
hb1m
整個過程中很感謝 劉大神、彩陽博主和一名熱心網友的幫助。
參考的:
http://www.cnblogs.com/topeet/p/5711957.html
http://blog.csdn.net/u012175418/article/details/52704734?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
http://www.cnblogs.com/emouse/archive/2013/01/29/2881311.html