|
https://www./118646.html 源碼包下載 鏈接:http://pan.baidu.com/s/1slyKG6D 密碼:seh2 ///////qt5.6移植
1.解包qt-everywhere-opensource-src-5.6.1.tar.gz
配置好交叉編譯器.
2.修改交叉編譯器, vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
QMAKE_CC = arm-linux-gnueabihf-gcc
QMAKE_CXX = arm-linux-gnueabihf-g++
QMAKE_LINK = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
3.配置QT
./configure -prefix /usr/local/qt-5.6-arm -release -xplatform linux-arm-gnueabi-g++ -make libs -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng
4. make -j4
make install
///////
5. QT編譯,安裝完成后, 在/usr/local/qt-5.6-arm里
在QT creator里增加一個(gè)arm構(gòu)件
1) QT creator打開后, 菜單Tools --> Options --> Build & Run(左邊欄) --> Compilers(右邊的頁(yè)框) --> add(選gcc)
顯示配置界面后, name : arm-gcc
compiler path: arm-linux-gnueabihf-g++交叉編譯器的路徑
完成后,點(diǎn)右下角的apply
2) 接著點(diǎn)擊頁(yè)框("Qt version") --> add --> 彈出界面后選擇/usr/local/qt-5.6-arm/bin/qmake
完成后,點(diǎn)擊apply
3) 接著點(diǎn)擊頁(yè)框("Kits") --> add 彈出界面后,
name : qt-arm
Compiler : arm-gcc
Qt version: qt-5.6-arm
完成后,點(diǎn)擊確認(rèn)保存退出
6. 嵌入式文件系統(tǒng)的QT環(huán)境配置:
1) 把PC上的/usr/local/qt-5.6-arm整個(gè)目錄復(fù)制到網(wǎng)絡(luò)文件系統(tǒng)的usr/local目錄里
2) 配置網(wǎng)絡(luò)文件系統(tǒng)的環(huán)境變量.
在網(wǎng)絡(luò)文件系統(tǒng)etc/profile文件里增加內(nèi)容:
export QTDIR=/usr/local/qt-5.6-arm
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=$QTDIR/lib/fonts
export QT_QPA_GENERIC_PLUGINS=evdevtouch:dev/input/event0
export QT_QWS_FONTDIR=$QTDIR/lib/fonts/
export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event?
#export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event0:inverty
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event?
export set LD_LIBRARY_PATH=$QTDIR:$QTDIR/lib/:$QT_QPA_PLATFORM_PLUGIN_PATH:$QT_QPA_FONTDIR:$LD_LIBRARY_PATH
配置完后成后,重啟板子才會(huì)生效?;蛘?quot;source /etc/profile"
////////////////////////////
設(shè)置QT鼠標(biāo),鍵盤的環(huán)境變量:
通過(guò)“cat /proc/bus/input/devices” 查看對(duì)應(yīng)的設(shè)備文件是哪個(gè)event
在板子文件系統(tǒng)的/etc/profile里修改環(huán)境變量
export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event?
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event?
重啟板子,以便環(huán)境變量生效。生效后,QT程序界面即可出鼠標(biāo)
在板上執(zhí)行Qt程序時(shí)會(huì)發(fā)生iconv工具的錯(cuò)誤: root @_@ # ./build-untitled-qt_arm-Debug/untitled
QIconvCodec::convertToUnicode: using Latin-1 for conversion, iconv_open failed
QIconvCodec::convertFromUnicode: using Latin-1 for conversion, iconv_open failed
解決移植libiconv工具庫(kù): 解包libiconv-1.14.tar.gz后,進(jìn)入源碼根目錄: ./configure --host=arm-linux-gnueabihf --prefix=`pwd`/libs
make && make install
完成后,從./libs/lib/目錄里復(fù)制preloadable_libiconv.so到板上文件系統(tǒng)的/lib目錄 然后還需要在板上文件系統(tǒng)的/etc/profile文件里配置一個(gè)環(huán)境變量: export LD_PRELOAD=/lib/preloadable_libiconv.so
完成以上操作后,再次執(zhí)行qt程序就不會(huì)報(bào)關(guān)于iconv的錯(cuò)誤了
移植到arm64架構(gòu)的系統(tǒng)上時(shí),需要使用是剛解包得到的源碼才可以。 make distclean清除不干凈上次編譯的.o文件,否則會(huì)發(fā)生”incompatible xxxx”的錯(cuò)誤. 修改使用arm64交叉編譯器, vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf QMAKE_CC = aarch64-linux-gnu-gcc
QMAKE_CXX = aarch64-linux-gnu-g++
QMAKE_LINK = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB = aarch64-linux-gnu-g++
QMAKE_AR = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY = aarch64-linux-gnu-objcopy
QMAKE_NM = aarch64-linux-gnu-nm -P
QMAKE_STRIP = aarch64-linux-gnu-strip
還是一樣的配置: ./configure -prefix /usr/local/qt-5.6-arm -release -xplatform linux-arm-gnueabi-g++ -make libs -optimized-qmake -pch -qt-sql-sqlite -qt-libjpeg -qt-zlib -qt-libpng
執(zhí)行make, 編譯qt源碼時(shí), 會(huì)發(fā)生錯(cuò)誤: .obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/dec.o:dec.c:function VP8DspInit: error: undefined reference to ‘VP8DspInitNEON’ .obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/enc.o:enc.c:function VP8EncDspInit: error: undefined reference to ‘VP8EncDspInitNEON’ .obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/lossless.o:lossless.c:function VP8LDspInit: error: undefined reference to ‘VP8LDspInitNEON’ .obj/disk3/myown/qt-5.6/qtimageformats/src/3rdparty/libwebp/src/dsp/upsampling.o:upsampling.c:function WebPInitUpsamplers: error: undefined reference to ‘WebPInitUpsamplersNEON’ collect2: error: ld returned 1 exit status
解決辦法, 修改qtimageformats/src/3rdparty/libwebp/src/dsp/dsp.h文件: 68 //#define WEBP_USE_NEON //注釋第68行后就可以編譯通過(guò) 編譯完成后,執(zhí)行”make install”就會(huì)把a(bǔ)rm版的qt工具及動(dòng)態(tài)庫(kù)安裝到”/usr/local/qt-5.6-arm”目錄里.
在qt-creator配置圖示: QT creator打開后, 點(diǎn)擊菜單Tools后,進(jìn)入設(shè)置編譯器界面:
 接著增加一個(gè)arm版本的配置:
 最后再設(shè)置一個(gè)arm版本的套件:

以上配置完成后, 新創(chuàng)建工程時(shí),就可以qt-arm的版本了。也可以在下面界面里的”Add kit”里增加arm版本:

為了節(jié)約空間,也可以僅把qt程序所需的動(dòng)態(tài)庫(kù)移到嵌入式文件系統(tǒng)里, 查看所需的動(dòng)態(tài)庫(kù)可以用ldd, 沒有l(wèi)dd命令可以用readelf查看: aarch64-linux-gnu-readelf -a qt-test | grep “l(fā)ibrary”
|