转载备份,原文章:银河麒麟V10系统+飞腾CPU交叉编译安装Qt-5.15.2_银河麒麟交叉编译_savagelin的博客-CSDN博客

操作系统版本名称:银河麒麟V10(SP1)

版本号:2203

系统状态:未激活

操作系统安全中心-应用保护的各项防护控制关闭

一、准备工作

1、下载qt源码包

下载网址:Index of /archive/qt

在任意空闲位置新建文件夹,并将源码包解压到该目录下。(这里在/home目录下新建名为Qt_source的文件夹,注:该目录所在位置的空闲空间应大于等于15G)

在该目录下执行命令:

sudo xz -d qt-everywhere-src-5.15.2.tar.xz

sudo tar -xvf qt-everywhere-src-5.15.2.tar

2、安装所依赖的库

1)、安装基础编译环境

sudo apt-get install libxcb-xinerama0-dev

sudo apt-get install build-essential perl python git

2)、安装编译Libxcb的相关依赖

sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev

3)、安装编译Qt WebKit的相关依赖

sudo apt-get install flex bison gperf libicu-dev libxslt-dev ruby

4)、安装编译Qt WebEngine的相关依赖

sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev libdbus-1-dev libfontconfig1-dev libcap-dev libxtst-dev libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev libegl1-mesa-dev gperf bison

5)、安装编译Qt Multimedia的相关依赖

sudo apt-get install libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

若是报错则安装最新版本

sudo apt -y install libasound2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev

6)、安装编译QDoc的相关依赖

sudo apt install libclang-6.0-dev llvm-6.0

7)、安装clang-8

sudo apt-get install clang

sudo apt-get install clang-8

8)、安装ninja

①、安装ninja编译依赖re2c

sudo apt-get install re2c

②、编译ninja

cd qt-everywhere-src-5.15.2/qtwebengine/src/3rdparty/ninja

./configure.py --bootstrap

若发生错误:/bin/sh: 1: g++: not found

解决:sudo apt-get install g++

③、安装ninja

sudo cp ./ninja /usr/bin

④、检查安装是否完成

ninja --version

二、编译安装

1、输入配置指令和参数

回到qt源码目录

执行指令:

普通配置(x86,arm):

./configure -prefix /usr/local/Qt-5.15.2 -release -opensource -nomake examples -nomake tests -platform linux-clang -recheck-all

若发生错误:.make:clang++:命令未找到

解决:

sudo apt-get update

sudo apt-get install clang

交叉编译(x86_arm):

下载交叉编译器地址:Downloads | GNU-A Downloads – Arm Developer

修改qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf 编译器为交叉编译器绝对路径

然后执行:

./configure -prefix /usr/local/Qt-5.15.2-arm -release -opensource -nomake examples -nomake tests -no-opengl -skip qtlocation -xplatform linux-aarch64-gnu-g++ -recheck-all

部分参数说明:

-prefix指定安装路径。

-platform选项指定了编译时使用的编译器.

-release在关闭调试的情况下编译和链接Qt。

-opensource Qt的开源版本的编译和链接。

-shared 创建和使用共享Qt库。

-nomake <part> 从要构建的部件列表中排除部分。

-xplatform <spec> 交叉编译的操作系统和编译器。有关支持的操作系统和编译器的列表,请参阅README文件。

-no-iconv不支持iconv

-xcb 使用系统安装的xcb

执行./configure 出现:"You don't seem to have 'make' or 'gmake' in your PATH"

sudo apt-get install build-essential

如果还不能解决,手动指定$MAKE

export MAKE=/usr/bin/make

几分钟后配置检查完毕:

Note: Also available for Linux: linux-clang linux-icc

Note: Disabling X11 Accessibility Bridge: D-Bus or AT-SPI is missing.

Qt is now configured for building. Just run 'make'.

Once everything is built, you must run 'make install'.

Qt will be installed into '/usr/local/Qt-5.15.2'.

2、make & make install

1)编译源码

执行命令:

make -j 8

允许8个编译命令同时执行,提高编译效率

特别注意(在编译中断时进行以下,若未中断则跳过直接到2)、安装,关键!!!)

执行make -j 8 指令的时候,会出现ninja: build stopped: subcommand failed,此时编译工作会被终止,其实这是一种正常现象,是由于linux进程的限制而不能继续执行。该命令终止于Makefile.gn_run中。解决如下:

ninja -v -C /home/gwi/test/qt-everywhere-src-5.15.2/qtwebengine/src/core/release QtWebEngineCore

接着,在qt-everywhere-src-5.15.2编写一个shell脚本(此处的示例脚本名为auto.sh,内容如下:

#!/bin/bash

i=0

times=30000

while [ $i -le $times ]

do

let i++

ninja -v -C /home/gwi/test/qt-everywhere-src-5.15.2/qtwebengine/src/core/release QtWebEngineCore

done

修改该脚本的权限

sudo chmod 777 auto.sh

执行该脚本,直到剩余文件数不再发生变化,按照提示修改相应文件的内容,如:

编译进程在文件数为[1/605]的时候循环,文件数不会减少,此时报错信息为源码文件下的一个头文件中,出现了不允许的数据类型转换。找到该文件,修改相应语句。如当前报错句为:

__fp16 fp16 = __fp16(f)

将其修改为(此处修改仅作为测试使用)

__fp16 fp16

再次执行auto.sh脚本,直到文件数减少为0,使用快捷键ctrl+z结束脚本的运行即可。

2)、安装

等待编译结束,执行命令:

sudo make install

Qt会安装在指定的目录下,等待指令执行结束,此时,Qt编译安装成功!

3、qtchooser安装qmake

在银河麒麟软件商店中下载Qt creator,配置Qt套件kits,Qt version路径为/usr/local/Qt-5.15.2/bin/qmake

1)、查看系统中所有的qmake:

qtchooser -l

可查看当前系统中qmake的版本

2)、安装qmake

qtchooser -install qt5.15.2 /usr/local/Qt-5.15.2/bin/qmake

注:绿色部分是安装的名称,可任意命名(此处命令中不含"`")

红色部分是qmake的绝对路径(此处命令不含" ’ '")

3)、设一下环境变量,设置默认qmake为刚才添加的最新版本:(该处只是添加了临时变量,建议直接添加到/etc/profile环境变量中)

export QT_SELECT=qt5.15.2

4)、查看当前系统应用的qmake版本:、

qmake –v

若执行发生错误:‘/usr/lib/qt5/bin/qmake‘: No such file or directory

是环境变量质量的因素没配好,导致系统没有识别

配置环境变量:

/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

修改‘/usr/lib/qt5/bin/qmake‘为实际安装路径如:/home/drs/QT_Source/qt-everywhere-src-5.15.2/qtbase/bin

安装结束!

另:在运行程序发生一个错误,这里也记录一下:

解决方法来自:https://blog.csdn.net/zhouyingge1104/article/details/127775022

Qt报错: /bin/lrelease: Command not found

想起来,用源码编译安装的时候好像最后有一些部分是安装失败的,于是尝试重新编译安装qttools这个package:

cd /home/zhouyingge1104/qt-everywhere-src-5.12.8/qttools
sudo qmake
sudo make
sudo make install

重新运行,报错消失。

qt5.15.2在银河麒麟v10sp1上编译源码后安装运行相关推荐

  1. mysql odbc 源码安装_26.1.7. 在Unix平台上从源码版本安装MyODBC

    26.1.7. 在Unix平台上从源码版本安装MyODBC 26.1.7.1. 要求 ·MySQL客户端库以及MySQL 4.0.0或更高版本的包含文件.(最好是MySQL 4.0.16或更高版本). ...

  2. (转)银河麒麟V10sp1服务器系统安装redis不能使用的解决办法

    我们在适配时,经常需要安装redis,但是在银河麒麟 V10sp1 服务器系统上安装使用 redis 的时候会有诸多问题,今天我们就来逐步分析解决一下. 1. 配好外网,使用麒麟源安装redis: 先 ...

  3. DM8在银河麒麟服务器上配置Oracle19c的DBLINK服务

    文章目录 前言 一.准备工作 二.操作步骤 1.Centos7配置 2.银河麒麟配置 总结 前言 随着国产操作系统的逐步发展壮大,银河麒麟SERVER版操作系统也应用越来越多,它能够安装很多国产软件, ...

  4. 银河麒麟V10SP1桌面操作系统安装和配置

    由于工作需要,要求在麒麟操作系统上做开发,虚拟机安装操作系统.CSDN的可用链接很少,这里尽量详细的列一下安装遇到的问题,以及附上可用的镜像. 从官网申请的安装镜像在本地的VMWare12.0版本无法 ...

  5. 【国产化】银河麒麟V10 aarch64 + TiDB国产化环境下安装EduSoho

    当下,为了避免关键技术受到海外制约,同时也是为了保护信息安全,软件国产化已经成为一种必然趋势.国家也陆续出台相关政策推进信创行业的发展.而阔知科技作为一家数字化学习技术服务商,也一直在为国产软件的生态 ...

  6. 银河麒麟V10 wireguard 编译

    系统信息 操作系统信息: 我这里使用的操作系统是 银河麒麟V10,CPU为飞腾 ARM64 根据wireguard 的编译指南:https://www.wireguard.com/compilatio ...

  7. 银河麒麟系统Arm64 编译Gdal

    银河麒麟系统Arm64 编译Gdal GDAL 官网下载版本:我这边下载的是2.4.2 Download - GDAL documentation 拷贝到麒麟用户目录下:并解压 打开命令行:输入 ma ...

  8. 银河麒麟服务器V10版(AMD) 安装常见服务

    银河麒麟服务器V10版(AMD) 安装常见服务 银河麒麟系统服务器版本使用的内核类似centos7,我们可以使用yum命令进行安装包,例如docker,docker-compose,nmap等. yu ...

  9. (转)linux上nginx源码编译安装

    亲测有效: 转:  https://segmentfault.com/a/1190000007116797https://segmentfault.com/a/1190000007116797 ngi ...

最新文章

  1. 对话文津|相约“信息”的前世今生
  2. 动态添加的面板不生效
  3. Mac上解决Chrome浏览器跨域问题
  4. 《黑天鹅》读书笔记(part2)--我们从重复中学习,但忽略了从未发生过的事件
  5. MATLAB中MEX文件的编写与调试
  6. 问题解决:Sublime 乱码显示GBK编码文件解决
  7. 过滤 php 网址,php过滤html中的其他网站链接的方法(域名白名单功能)
  8. find和grep命令合集
  9. 解决npm npm does not support Node.js
  10. Java 正则提取银行短信内容
  11. 洛谷 P2317 [HNOI2005]星际贸易 解题报告
  12. python语言绘制词云图
  13. html验证码自动刷新,验证码输入错误后自动刷新验证码
  14. win7触摸板怎么关闭_win7系统如何禁用触摸板功能 win7禁用触摸板功能方法【详解】...
  15. 关于职称评审的一些见解
  16. oracle 查询时间段内的天,ORACLE任意时间段内所有天数日期查询
  17. Daytime服务器
  18. byref和byval区别的正确理解
  19. 2013-08-17 PMP错题记录(第七章)
  20. JNI(4) JNI Functions

热门文章

  1. 量化交易的单因子分析——聚宽平台
  2. java中Stack的peek方法
  3. 7-3 两个有序链表序列的合并 (15 分)
  4. Android教程-从零开始一步一步接入SDK,最新Android架构师成长路线
  5. java学习笔记--黑马徐老师三--项目实战
  6. SSH加固配置谷歌双因子认证+更换手机方式
  7. Pr:自动匹配到序列
  8. 如何用一个U盘中装多个iso安装镜像包让一个U盘当N个启动盘,用U盘做一个虚拟光驱可以选择ISO载入到虚拟光驱,多系统启动U盘解决方案
  9. 游戏程序设计中有趣的绕轴旋转
  10. MyBatis Generator的使用和坑