第一坑: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.