Vm下Ubuntu编译Qt5.15遇到的坑

Reading time ~1 minute


第一坑:VM硬件设置

环境概况:

  • VM15(处理器6, 11GB, 硬盘60GB), ubuntu20.04tls, Qt5.15

可能出现的问题:

  • g++: internal compiler error: Killed (program cc1plus)

以往都是硬盘装双系统没有遇到过的这种情况,使用make -j 6进行编译并行编译的数量为6,一开始内存设置为4g。出现1所显示的错误,大概率是因为内存不足杀死了正在编译的进程导致编译失败;

方法1: 设置内存为8G,并且使用make -j 2减少并行编译数量;

  • 结果:仍然出现了该错误,因为在编译Qt15.0的Qtwebengine这部分的chrome内核时会使用ninja进行编译,此处仍然会按照最大并行数量进行编译导致失败。

方法2: 内存设置为11GB;

  • 结果:没有出现该错误。

第二坑:没有仔细configure之后检查的看依赖项直接make

configure命令如下:

./configure -prefix /home/ss/qt/qt5.15 -opensource -qpa xcb -xcb -xcb-xlib -bundled-xcb-xinput -nomake tests

可能出现的错误:

  • 1.Project ERROR: xcb development package not found #1

  • 2.surface_factory_qt.cpp:(.text._ZN15QtWebEngineCore16SurfaceFactoryQtC2Ev+0x41) undefined reference to `vtable for ui::GLOzoneGLXQt’collect2: error: ld returned 1 exit status

  • 3.undefined reference to `vtable for ui::GLOzoneGLXQt’

一些依赖项没有安装,如x11,qpa-xcb,opengl相关库引发错误,尤其是某些检测到但其实并没有安装开发版的包也会引发错误,如下图所示:

例子

qpa-xcb如若没有安装成功,即使编译成功,在写程序编译运行时将会报错,在安装目录下./plugins/platforms会缺少libqxcb.so这个库,可能的提示:

  • Failed to load platform plugin “xcb”.

请根据下列网址,逐个下载对应版本的dev包

https://doc.qt.io/qt-5/linux-deployment.html

https://doc.qt.io/qt-5/linux-requirements.html


其他

剩余一部分错误的依赖提示都比较明显就不在此赘述记录了。最后configure在–recheck-all之前最好删除编译的东西重新编译(好费时),所以最好把依赖补充完整,以免长时间的编译…(折磨),提示如下:

Prior to reconfiguration, make sure you remove any leftovers from
the previous build.