Qt5.7.0编译移植到Linux-Arm-A9

爷,独闯天下 提交于 2019-12-04 16:26:32

Linux环境下编译Qt5.7.0

       我的系统是Ubuntu 16.04编译器是arm-linux-gnueabihf-gcc5.4,在ubuntu16.04中直接安装即可。

编译:

第一步:

下载qt-everywhere-opensource-src-5.7.0.tar.gz,这个Qt官方有。安装arm-linux-gnueabihf-gcc:

$ sudo apt install gcc-arm-linux-gnueabi
$ sudo apt install gcc-arm-linux-gnueabihf

第二步:

找个英文目录,把qt-everywhere-opensource-src-5.7.0.tar.gz放进去。用终端解压:

$: tar -zxvf qt-everywhere-opensource-src-5.7.0.tar.gz

最好别右击“提取到此处”,这个解压好像和命令解压不同,到编译的时候就坑了。

第三步:

修改编译配置文件,在目录:qt-everywhere-opensource-src-5.7.0/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

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

# modifications to g++.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
load(qt_config)

第四步:

在编译之前,还有个改动,额。。。qt3d和qtcanvas3d在编译的时候会报错,说是未识别模块,而且嵌入式的没有opengl,识别了也会报错,导致编译失败,而且编译配置参数里面也没有这两个模块的配置。我的解决方法简单粗暴,在配置时参数加-no-opengl,然后打开qt-everywhere-opensource-src-5.7.0/qt.pro文件,找到:

addModule(qt3d, qtdeclarative qtimageformats)
addModule(qtcanvas3d, qtdeclarative)

这两行注释掉(#号注释),或者直接删掉。如果不注释掉,即使加了-no-opengl也会报错,编译失败。

第五步:

配置编译参数,用./configre -help 可以查看参数。我的配置是:

$./configure -release -opensource -xplatform linux-arm-gnueabihr-g++ -prefix /opt/Qt-5.5.7/armv7-a -c++11 -no-opengl

注意:红色部分是你的Qt库将要安装的位置,慎重,如果以后要装那,就写那。移动了位置,用的时候qmake找不到库。虽然可以配置,但是每个工程用的时候都得配路径,很麻烦。-no-opengl表示没有opengl。我没加参数-qreal float ,因为我发现,加上之后编不过。在编译到.../qtbase/src/gui/painting/qpdf.cpp的时候会报错。

第六步:

如果上面配置没有问题,接下来make:

$make

或者

$make -j2      /*CPU 几个核可以使用“-j几”,核多编的快*/

等20~120分钟。。。完成。

第七步:

安装:

$sudo make install

在这里加sudo是因为,安装时会将库文件复制到上面第七步配置的安装目录(/opt/Qt-5.7.0/armv7-a ),opt目录是需要root权限的。

第八步:第九步:第十步:

       编译平台插件,由于Qt5以后,删除了嵌入式的QWS(Qt windows system-Qt窗体系统)换成QPA(Qt Platform Abstration -Qt平台抽象),平台插件在qt-everywhere-opensource-src-5.7.0/qtbase/src/plugins/platforms/下面。有各种平台的插件,基于frambuffer的插件是lunuxfb这个文件夹下,其他的还有android、ios、winrt、windows等等,需要什么平台的编译就是了。QPA运行时要加参数。

       好了,这是编译Qt5.7.0的过程。这个我把qt3d和qtcanvas3d砍掉了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!