建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

五湖四海@银河护卫队

发帖: 119粉丝: 43

级别 : 版主

发消息 + 关注

发表于2020年09月10日 19:54:59 1307 3
直达本楼层的链接
楼主
显示全部楼层
[干货分享] Qt 5.13.0编译移植指导 for 凝思 6.0.90【鲲鹏920(ARM64)】


1 简介

Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。

本文以Qt 5.13.0版本编译为例说明在凝思Linx 6.0.90 ARM系统上的编译过程。

环境

类别

子项

版本

获取地址(方法)

硬件

CPU

Kunpeng920

iBMC

OS

凝思 Linx

6.0.90

cat /etc/issue

Kernel

4.19.12

uname -a

软件

GCC

6.3.0

gcc -v

依赖安装

3.1 安装基础依赖

apt-get -y   install gcc* xcb* libxcb* mesa* alsa* perl*   system*

apt-get -y   install gperf flex bison ruby dbus* cups* at-spi2*

apt-get -y   install libqt5multimedia5* *opengl* libnss* fontconfig*

apt-get -y install libclang* libx11*   libxext* libxtst* libxkbcommon* libXrender* libgcrypt* pciutils* libgudev1*   libcap* libXrandr* libXcomposite* libXcursor* pulseaudio* *freeglut* libglew*   libdbus*

注:以上命令在系统联网状态下直接执行,系统未联网情况下需要先配置本地apt源再执行上面命令安装依赖(凝思系统iso挂载后自动配置本地apt源);

【重要】系统不联网情况下,需要单独手动获取knronosmesalibnss3相关依赖并使用dpkg -i命令手动安装对应的deb包(依赖缺失会导致编译qt-5.13.0后没有qtwebengine模块);

1libnss3依赖

1)手动下载如下deb安装包:

libnss3-dev_3.26.2-1.1+deb9u1_arm64.deb

libnss3_3.26.2-1.1+deb9u1_arm64.deb

libnspr4-dev_4.12-6_arm64.deb

libnspr4_4.12-6_arm64.deb

libc6_2.24-11+deb9u4_arm64.deb

2)获取地址:

http://ftp.debian.org/debian/pool/main/n/nss/libnss3-dev_3.26.2-1.1+deb9u1_arm64.deb

http://ftp.debian.org/debian/pool/main/n/nss/libnss3_3.26.2-1.1+deb9u1_arm64.deb

http://deb.debian.org/debian/pool/main/n/nspr/libnspr4-dev_4.12-6_arm64.deb

http://deb.debian.org/debian/pool/main/n/nspr/libnspr4_4.12-6_arm64.deb

https://ftp.zcu.cz/debian/pool/main/g/glibc/libc6_2.24-11+deb9u4_arm64.deb

3)手动安装(有依赖顺序):

dpkg -i libc6_2.24-11+deb9u4_arm64.deb

dpkg -i libnspr4_4.12-6_arm64.deb

dpkg -i libnspr4-dev_4.12-6_arm64.deb

dpkg -i libnss3_3.26.2-1.1+deb9u1_arm64.deb

dpkg -i libnss3-dev_3.26.2-1.1+deb9u1_arm64.deb

 

2mesa依赖

1)手动下载如下deb安装包:

libwayland-bin_1.12.0-1_arm64.deb

libegl1-mesa-drivers_13.0.6-1+b2_arm64.deb

libgl1-mesa-dev_13.0.6-1+b2_arm64.deb

libgbm-dev_13.0.6-1+b2_arm64.deb

libgles1-mesa_13.0.6-1+b2_arm64.deb

libgles1-mesa-dev_13.0.6-1+b2_arm64.deb

libegl1-mesa-dev_13.0.6-1+b2_arm64.deb

libgbm1_13.0.6-1+b2_arm64.deb

libglapi-mesa_13.0.6-1+b2_arm64.deb

libwayland-dev_1.12.0-1_arm64.deb

libegl1-mesa_13.0.6-1+b2_arm64.deb

libgl1-mesa-glx_13.0.6-1+b2_arm64.deb

libgl1-mesa-dri_13.0.6-1+b2_arm64.deb

mesa-vulkan-drivers_13.0.6-1+b2_arm64.deb

mesa-common-dev_13.0.6-1+b2_arm64.deb

mesa-va-drivers_13.0.6-1+b2_arm64.deb

mesa-vdpau-drivers_13.0.6-1+b2_arm64.deb

mesa-opencl-icd_13.0.6-1+b2_arm64.deb

2)获取地址:

https://mirrors.aliyun.com/debian/pool/main/w/wayland/libwayland-bin_1.12.0-1_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libegl1-mesa-drivers_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dev_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgbm-dev_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgles1-mesa_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgles1-mesa-dev_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libegl1-mesa-dev_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgbm1_13.0.6-1+b2_arm64.deb

https://mirrors.cloud.tencent.com/debian/pool/main/m/mesa/libglapi-mesa_13.0.6-1%2Bb2_arm64.deb

https://mirrors.aliyun.com/debian/pool/main/w/wayland/libwayland-dev_1.12.0-1_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libegl1-mesa_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgl1-mesa-glx_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/libgl1-mesa-dri_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/mesa-vulkan-drivers_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/mesa-common-dev_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/mesa-va-drivers_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/mesa-vdpau-drivers_13.0.6-1+b2_arm64.deb

http://ftp.debian.org/debian/pool/main/m/mesa/mesa-opencl-icd_13.0.6-1+b2_arm64.deb

3)手动安装:

dpkg -i libwayland-bin_1.12.0-1_arm64.deb

dpkg -i libegl1-mesa-drivers_13.0.6-1+b2_arm64.deb

dpkg -i libgl1-mesa-dev_13.0.6-1+b2_arm64.deb

dpkg -i libgbm-dev_13.0.6-1+b2_arm64.deb

dpkg -i libgles1-mesa_13.0.6-1+b2_arm64.deb

dpkg -i libgles1-mesa-dev_13.0.6-1+b2_arm64.deb

dpkg -i libegl1-mesa-dev_13.0.6-1+b2_arm64.deb

dpkg -i libgbm1_13.0.6-1+b2_arm64.deb

dpkg -i libglapi-mesa_13.0.6-1+b2_arm64.deb

dpkg -i libwayland-dev_1.12.0-1_arm64.deb

dpkg -i libegl1-mesa_13.0.6-1+b2_arm64.deb

dpkg -i libgl1-mesa-glx_13.0.6-1+b2_arm64.deb

dpkg -i libgl1-mesa-dri_13.0.6-1+b2_arm64.deb

dpkg -i mesa-vulkan-drivers_13.0.6-1+b2_arm64.deb

dpkg -i mesa-common-dev_13.0.6-1+b2_arm64.deb

dpkg -i mesa-va-drivers_13.0.6-1+b2_arm64.deb

dpkg -i mesa-vdpau-drivers_13.0.6-1+b2_arm64.deb

dpkg -i mesa-opencl-icd_13.0.6-1+b2_arm64.deb

 

3knronos依赖

1)手动下载如下deb安装包:

libuuid-perl_0.27-1_arm64.deb

doc-base_0.10.7_all.deb

khronos-api_0~svn33340-0.1_all.deb

libyaml-tiny-perl_1.70-1_all.deb

opencl-headers_2.1-1_all.deb

opencl-c-headers_2.1-1_all.deb

opencl-clhpp-headers_2.0.10-1_all.deb

opencl-1.2-html-doc_1.0~svn27110-1_all.deb

opencl-clhpp-headers-doc_2.0.10+git12-g5dd8bb9-1_all.deb

opengl-4-html-doc_1.0~svn31251-1build1_all.deb

opencl-1.2-man-doc_1.0~svn27110-1_all.deb

opengl-4-man-doc_1.0~svn31251-1build1_all.deb

2)获取地址:

http://deb.debian.org/debian/pool/main/libu/libuuid-perl/libuuid-perl_0.27-1_arm64.deb

https://mirrors.huaweicloud.com/debian/pool/main/d/doc-base/doc-base_0.10.7_all.deb

http://repo.atlantic.net/ubuntu/pool/universe/k/khronos-api/khronos-api_0~svn33340-0.1_all.deb

http://mirror.nus.edu.sg/Debian/pool/main/liby/libyaml-tiny-perl/libyaml-tiny-perl_1.70-1_all.deb

http://ftp.debian.org/debian/pool/main/k/khronos-opencl-headers/opencl-headers_2.1-1_all.deb

http://ftp.debian.org/debian/pool/main/k/khronos-opencl-headers/opencl-c-headers_2.1-1_all.deb

https://mirror.sinavps.ch/debian/pool/main/k/khronos-opencl-clhpp/opencl-clhpp-headers_2.0.10-1_all.deb

http://ftp.debian.org/debian/pool/main/k/khronos-opencl-man/opencl-1.2-html-doc_1.0~svn27110-1_all.deb

http://ports.ubuntu.com/pool/universe/k/khronos-opencl-clhpp/opencl-clhpp-headers-doc_2.0.10+git12-g5dd8bb9-1_all.deb

https://repos.uclv.edu.cu/ubuntu/pool/universe/k/khronos-opengl-man4/opengl-4-html-doc_1.0~svn31251-1build1_all.deb

http://ftp.ubuntu.com/ubuntu/ubuntu/pool/universe/k/khronos-opencl-man/opencl-1.2-man-doc_1.0~svn27110-1_all.deb

https://mirrors.cloud.tencent.com/ubuntu/ubuntu/pool/universe/k/khronos-opengl-man4/opengl-4-man-doc_1.0~svn31251-1build1_all.deb

3)手动安装(有顺序依赖):

dpkg -i libuuid-perl_0.27-1_arm64.deb

dpkg -i doc-base_0.10.7_all.deb

dpkg -i khronos-api_0~svn33340-0.1_all.deb

dpkg -i libyaml-tiny-perl_1.70-1_all.deb

dpkg -i opencl-headers_2.1-1_all.deb

dpkg -i opencl-c-headers_2.1-1_all.deb

dpkg -i opencl-clhpp-headers_2.0.10-1_all.deb

dpkg -i opencl-1.2-html-doc_1.0~svn27110-1_all.deb

dpkg -i opencl-clhpp-headers-doc_2.0.10+git12-g5dd8bb9-1_all.deb

dpkg -i opengl-4-html-doc_1.0~svn31251-1build1_all.deb

dpkg -i opencl-1.2-man-doc_1.0~svn27110-1_all.deb

dpkg -i opengl-4-man-doc_1.0~svn31251-1build1_all.deb

 

Qt编译安装

4.1 下载Qt 5.13.0源码包并解压

wget http://download.qt.io/archive/qt/5.13/5.13.0/single/qt-everywhere-src-5.13.0.tar.xz

tar -xf   qt-everywhere-src-5.13.0.tar.xz

4.2 编译安装

1、进入源码目录,创建build路径并进入build目录执行configure

cd qt-everywhere-src-5.13.0

mkdir build

cd build/

../configure

然后选择安装类型,输入o表示开源版。然后输入yes接受GPL协议

image.png 

image.png

注:确保执行configure后上图红框中“Required system libraries”项全部都是yes“Required system libraries for qpa-xcb”项也需要全部都是yes),否则编译后不会生成 qtwebengine模块,如果单独编译qtwebengine模块可以在qt源码解压路径执行make -j $(nproc) module-qtwebengine

2、运行make -j $(nproc),等待Qt编译完成。

3、当make完成后,运行make install,等待安装过程结束。

4、执行ls /usr/local/Qt-5.13.0查看编译后结果

image.png

5、执行ls /usr/local/Qt-5.13.0/lib | grep “libQt5WebEn”查看编译后是否有qtwebengine模块

image.png

4.3设置环境变量

vi /etc/profile

/etc/profile文件末尾添加下面几行:

export   QTDIR=/usr/local/Qt-5.13.0     

export   PATH=$QTDIR/bin:$PATH

export   MANPATH=$QTDIR/man:$MANPATH

export   LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

image.png

保存退出后,执行如下命令,使配置生效

source /etc/profile

使用qmake -v校验Qmake版本,完成编译安装

qmake -v

image.png 

 

测试

5.1 编译并生成helloworld

1、创建helloworld目录,在目录下创建helloworld.cpp并写入测试代码

mkdir helloworld

cd helloworld/

vi helloworld.cpp

增加如下内容

#include<QApplication>

#include<QLabel>

int main(int argc,char *argv[])

{

QApplication app(argc,argv);

QLabel *label=new QLabel("helloworld!");

label->show();

return app.exec();

}

image.png

2、在helloworld目录执行编译

qmake -project

qmake

make

image.png

3、查看编译后的结果

image.png

4、执行./helloworld ,会弹出对话框

image.png

FAQ

1、编译Qt 5.13.0执行make install报“linuxdmabufclientbufferintegration.h:92:5: error: ‘PFNEGLBINDWAYLANDDISPLAYWL’ does not name a type”错误,详细报错如下:

image.png

【解决方法】

修改qtwayland/src/hardwareintegration/compositor/linux-dmabuf-unstable-v1/linuxdmabuf.h文件,在56行增加#include <EGL/eglmesaext.h>

image.png

然后再次执行make install编译安装;

 

2编译Qt 5.13.0执行make install/usr/bin/ld: cannot find -lclip2tri/usr/bin/ld: cannot find -lpoly2tri/usr/bin/ld: cannot find -lclipper等错误,详细报错如下:

image.png

【解决方法】

执行apt-get -y install perl*安装perl,然后执行make clean,接着执行make && make install重新编译并安装。

 

3、执行make如果报“helloworld.cpp:1:9: fatal error: QApplication: No such file or directory”错误,详细报错如下:

image.png

【解决方法】

修改helloworld.pro文件,在文件末尾加QT+=widgets

image.png

然后再次执行make编译;

 


举报
分享

分享文章到朋友圈

分享文章到微博

Fitch@守望者

发帖: 38粉丝: 12

级别 : 版主

发消息 + 关注

发表于2020年09月11日 10:54:23
直达本楼层的链接
沙发
显示全部楼层

详细

不联网情况下下载Ubuntu、Debain的依赖是真麻烦

点赞 评论 引用 举报

发帖: 79粉丝: 4

级别 : 外部版主

发消息 + 关注

发表于2020年09月11日 13:42:24
直达本楼层的链接
板凳
显示全部楼层

点赞 评论 引用 举报

树人@银河护卫队

发帖: 22粉丝: 6

级别 : 版主

发消息 + 关注

发表于2020年09月14日 15:27:32
直达本楼层的链接
地板
显示全部楼层

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册