Qt5.12.0 for aarch64 编译

参考文章:

Qt5.9.7 for ARM的编译安装(32位和64位)

https://blog.csdn.net/Namcodream521/article/details/83928913

 

先贴以上文章,后面再补充在ubuntu的aarch64系统上编译qt5.12.0的内容。

 

下载源码
前往http://download.qt.io/official_releases/qt/5.9/5.9.7/single/下载最新版的源码(我这里下载的是当时最新的5.9.7)qt-everywhere-opensource-src-5.9.7.tar.xz,然后解压到某个文件夹

为你的Linux安装常用的开发环境,比如gcc,make,cmake,gdb,g++
我用的是debian9.5,sudo apt-get install build-essential可以安装大部分需要的开发环境。

安装arm-linux-gcc
注意,别用4.x的arm-linux-gcc,因为老版本的gcc不支持c++11,虽然4.8开始的gcc可以通过-std=c++11来开启c++11,但编译还是会有很多问题,我用的是6.3.1的版本,对c++支持比较好。从网上下载arm-linux-gcc的压缩包解压出来设置好环境变量就行了,注意arm-gcc有好多种版本,要选择arm-linux-gnueabihf或arm-linux-gnueabi,如果你的ARM支持硬件浮点运算就选择前者,其中x86_64表示宿主机是64位并不是目标平台是x86_64。配置完了别忘了验证你的arm-linux-gcc是否能运行,方法与PC上的gcc类似。

gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz 记得下载这个gcc-linaro-6.3.1-2017.02-x86_64_arm-eabi.tar.xz而不是这个

修改qmake.conf
因为我选择的是支持硬件浮点运算的arm-gcc,而qmake.conf默认的是不带hf的gcc,所以要做修改,找到qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf,将所有的arm-linux-gnueabi替换成arm-linux-gnueabihf,然后保存。

配置
这里去掉了opengl,目前还没找到怎么在arm中编译支持opengl的qt,安装路径我选择的是/opt/arm-qt,务必确认安装路径存在。

32位arm:

../configure -release -extprefix /opt/arm-qt -xplatform linux-arm-gnueabi-g++ -no-opengl -no-openssl -nomake tests -no-compile-examples -nomake examples -gif -ico -qt-libpng -qt-libjpeg -qt-sqlite

64位aarch64:

../configure -recheck-all -release -extprefix /opt/aarch64-qt -xplatform linux-aarch64-gnu-g++ -no-opengl -no-openssl -nomake tests -no-compile-examples -nomake examples -gif -ico -qt-libpng -qt-libjpeg -qt-sqlite

在此过程中,会让你选择商业版还是开源版,选择o就行,还有是否接受协议,输入y就行。

Make
前面的步骤都没问题之后,就可以开始漫长的编译了,如果你的CPU比较强大,可以多线程加快速度,比如make -j4,如果你的arm-gcc版本低于6.x最好单线程,不然很容易出错。Make过程需要很长时间。

make无误之后,就可以make install了
注意权限问题,可能要sudo make install,只要make没出错,install几乎不会有问题。

在qt creator中加入刚才编译安装的arm版qt
当然前提是你已经为宿主机安装了qt。

用qt creator新建一个arm版的qt程序测试一下能不能正常运行,注意,将编译好的程序拷贝到arm上可能要chmod改一下权限才能运行。
--------------------- 
作者:Segment fault 
来源:CSDN 
原文:https://blog.csdn.net/Namcodream521/article/details/83928913 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

以下是本人参考上面文章进行的操作:

1.下载qt-everywhere-src包进行编译:

在http://download.qt.io/archive/qt/  下载最新版本的everywhere版本的安装包,everywhere_src版本在每个qt版本的single目录下。我下的是目前最新的qt-everywhere-src-5.12.0.tar.xz

2. 因为软件最终运行环境是放到3399开发板上,因此将安装包ftp到板上后,解压。

3.因为板上已经有了gcc等编译环境,因此不需要安装gcc编译环境。本人的gcc版本如下:

gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4)
4.进入qtbase/mkspecs目录下,看到已经有linux-aarch64-gnu-g++文件夹,同时该文件夹下也有qmake.conf,因此没有进行相关的qmake.conf的修改。

5.回到解压出来的根目录下的qtbase目录,因为configure运行程序在该目录下,在命令行输入如下配置命令,进行配置:

配置
这里去掉了opengl,目前还没找到怎么在arm中编译支持opengl的qt,安装路径我选择的是/opt/aarch64-qt,务必确认安装路径存在:

./configure -recheck-all -release -extprefix /opt/aarch64-qt -xplatform linux-aarch64-gnu-g++ -no-opengl -no-openssl -nomake tests -no-compile-examples -nomake examples -gif -ico -qt-libpng -qt-libjpeg -qt-sqlite

 

运行完配置命令后,会提示你运行make命令进行编译:

Qt is now configured for building. Just run 'make'.
Once everything is built, you must run 'make install'.
Qt will be installed into '/opt/aarch64-qt'.

6. 输入make进行编译

在我的3399板上,用了1个钟多一点编译完。

编译完毕,如下,没看到有生成错误。

Qt5.12.0 for aarch64 编译_第1张图片

7.  在解压根目录下的qtbase目录下,输入make install命令,进行安装

主要是将编译后的结果文件拷贝到/opt/aarch64-qt/,如果make install不成功,考虑先创建/opt/aarch64-qt目录: mkdir /opt/aarch64-qt,再运行make install

此时看到/opt/aarch64-qt目录下如下:

Qt5.12.0 for aarch64 编译_第2张图片

这个就是编译后的头文件和库文件,开发和运行qt程序时需要用到。

 

编辑开发板上 /etc/profile文件,在最后一行添加如下环境变量,设置qt路径:

export QTDIR=/opt/aarch64-qt
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

添加完后wq保存退出,执行command:

source /etc/profile

使修改生效,然后你就可以在你的开发板上使用命令编译qt编写的程序了。

 

1.使用qtcreator创建一个demo,将文件传到开发板上进行编译。

如果不想使用qtcreator生成的.pro文件,可以手动命令编译:

qmake -project QT+=widgets    
qmake demo.pro
make

 

创建.pro时必须加上qt模块,否则后面make的时候会提示各种qt模块相关的头文件找不到。

最简单的方法是直接用qtcreator生成的.pro文件,然后直接make,会生成相应的目标文件。

 

你可能感兴趣的:(qt)