qt5.6移植到arm和arm64

来源:互联网 发布:淘宝微淘粉丝怎么增加 编辑:程序博客网 时间:2024/06/13 21:53

源码包下载
链接: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-strip3.配置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程序界面即可出鼠标


移植到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”

原创粉丝点击