在华为鲲鹏服务器中直接编译arm版qt库 5.9.2并且编译程序的方法

准备,安装编译器:
安装arm-linux-gnueabi-gcc:
$ sudo apt install gcc-arm-linux-gnueabi
$ sudo apt install g++-arm-linux-gnueabi

$ sudo apt install g++   //如果没有安装g++,还需要安装g++

$ sudo apt install python   //编译qtqml需要Python

 

 


(或者使用 arm-none-linux-gnueabi-gcc ,qmake.conf需要同步进行更改。)

第一步:
下载qt-everywhere-opensource-src-5.9.2.tar.gz,这个Qt官方有。下载路径:http://download.qt.io/archive/qt/5.9/5.9.7/single/

第二步:
找个英文目录,把qt-everywhere-opensource-src-5.9.2.tar.gz放进去。
用终端解压:tar -zxvf qt-everywhere-opensource-src-5.9.2.tar.gz
最好别右击“提取到此处”,这个解压好像和命令解压不同。

第三步:
修改编译配置文件:需要根据位数分别进行修改

arm32位:修改qmake编译配置参数 qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.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

arm64位:修改qmake编译配置参数 qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf

# modifications to g++.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++

# modifications to linux.conf
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

注意:
这里指定了编译arm版qt所使用的编译器,与后期QtCreator项目的编译器是一样的。
如果你是用的是arm-none-linux-gnueabi-gcc,那么每一项都需要修改为arm-none-linux-gnueabi-*。

#这里提前解释一下,第三步中已经指定好了编译器版本,所以第四步不需要指定了。
#第四步中的-xplatform linux-arm-gnueabi-g++是对应qmake.conf所在的文件夹,代表了编译的Qt库的版本。

第四步:
配置编译参数,用./configre -help 可以查看参数。
我的配置是(去除掉了一些用不到的选项,使用-nomake进行了指定,不需要examples等等):

此处,需要注意,32位和64位的区别

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

 

本文使用的是:

./configure -recheck-all -release -opensource -confirm-license -xplatform linux-aarch64-gnu-g++ -prefix /usr/local/qt5.9.2 -nomake examples -no-opengl -no-openssl -no-iconv -silent -qpa linuxfb -no-gtk -qt-libjpeg -qt-libpng -no-dbus

 


注意:
1、-xplatform linux-aarch64-gnu-g++ ,指定了编译Arm版的QT库;
2、-prefix后面的配置为qt库需要安装的位置,这个需要根据你的安装位置自己指定。

3、如果更换了./confugure配置内容,尤其是重新指定了-xplatform,需要将QT的源代码删除,重新执行命令。

第五步:
如果上面配置没有问题,接下来make:
$make
或者
$make -j64                 /*CPU 几个核可以使用“-j几”,核多编的快*/

第六步:
安装:$sudo make install
在这里加sudo是因为,安装时会将库文件复制到上面第四步配置的安装目录( /usr/local/qt5.9.2)。
usr目录是需要root权限的。
   
好了,这是编译Qt5.9.2的过程。


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

编译软件

1、修改/etc/profile文件,设置qmake的环境变量

export PATH=$PATH: /usr/local/qt5.9.2/bin

2、进入程序目录执行qmake和make命令实现程序的构建和编译。如果程序目录中没有.pro文件,参考https://www.cnblogs.com/hbtmwangjin/articles/9023183.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值