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里增加一个arm构件
1) QT creator打开后, 菜单Tools --> Options --> Build & Run(左边栏) --> Compilers(右边的页框) --> add(选gcc)
显示配置界面后, name : arm-gcc
compiler path: arm-linux-gnueabihf-g++交叉编译器的路径
完成后,点右下角的apply
2) 接着点击页框("Qt version") --> add --> 弹出界面后选择/usr/local/qt-5.6-arm/bin/qmake
完成后,点击apply
3) 接着点击页框("Kits") --> add 弹出界面后,
name : qt-arm
Compiler : arm-gcc
Qt version: qt-5.6-arm
完成后,点击确认保存退出
6. 嵌入式文件系统的QT环境配置:
1) 把PC上的/usr/local/qt-5.6-arm整个目录复制到网络文件系统的usr/local目录里
2) 配置网络文件系统的环境变量.
在网络文件系统etc/profile文件里增加内容:
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
配置完后成后,重启板子才会生效。或者"source /etc/profile"
////////////////////////////
设置QT鼠标,键盘的环境变量:
通过“cat /proc/bus/input/devices” 查看对应的设备文件是哪个event
在板子文件系统的/etc/profile里修改环境变量
export QT_QPA_EVDEV_MOUSE_PARAMETERS=/dev/input/event?
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event?
重启板子,以便环境变量生效。生效后,QT程序界面即可出鼠标
在板上执行Qt程序时会发生iconv工具的错误: 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工具库: 解包libiconv-1.14.tar.gz后,进入源码根目录: ./configure --host=arm-linux-gnueabihf --prefix=`pwd`/libs
make && make install
完成后,从./libs/lib/目录里复制preloadable_libiconv.so到板上文件系统的/lib目录 然后还需要在板上文件系统的/etc/profile文件里配置一个环境变量: export LD_PRELOAD=/lib/preloadable_libiconv.so
完成以上操作后,再次执行qt程序就不会报关于iconv的错误了
移植到arm64架构的系统上时,需要使用是刚解包得到的源码才可以。 make distclean清除不干净上次编译的.o文件,否则会发生”incompatible xxxx”的错误. 修改使用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
执行make, 编译qt源码时, 会发生错误: .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行后就可以编译通过 编译完成后,执行”make install”就会把arm版的qt工具及动态库安装到”/usr/local/qt-5.6-arm”目录里.
在qt-creator配置图示: QT creator打开后, 点击菜单Tools后,进入设置编译器界面:
 接着增加一个arm版本的配置:
 最后再设置一个arm版本的套件:

以上配置完成后, 新创建工程时,就可以qt-arm的版本了。也可以在下面界面里的”Add kit”里增加arm版本:

为了节约空间,也可以仅把qt程序所需的动态库移到嵌入式文件系统里, 查看所需的动态库可以用ldd, 没有ldd命令可以用readelf查看: aarch64-linux-gnu-readelf -a qt-test | grep “library”
|