前言:
最近接手的一个项目是qt写的客户端, 里面使用qwebengine集成了web的功能, 但是原来的编译环境比较乱, 所以重新使用centos7搭建一个qt5.15.15的开发环境.
第一部分: 准备环境
1, 我安装的是centos版本是: 7.9.2009, minimal安装.
2, 编译高版本gcc, 我使用的是6.5.0, 下载地址如下:
编译如下:
a) ./contrib/download_prerequisites
b) mkdir build && cd build
c) ../configure --prefix=/usr/local/gcc6.5.0 --enable-threads=posix --enable--long-long --enable-languages=c,c++ --disable-checking --disable-multilib
d) make -j4 && make install
配置PATH和库路径.
3, openssl1.1, 下载地址如下:
https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1.zip
编译如下:
./config --prefix=/usr/local/openssl
make -j4 && make install
4, nodejs, 下载地址如下:
https://nodejs.org/dist/v16.20.2/node-v16.20.2-linux-x64.tar.xz
配置PATH.
5, ninja, 下载地址如下:
https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip
配置PATH.
6, cmake, 下载地址如下:
https://cmake.org/files/v3.25/cmake-3.25.3-linux-x86_64.tar.gz
配置PATH.
第二部分: 安装依赖
yum groupinstall "Development Tools" -y
yum install -y 'xcb-util-*-devel' libxkbcommon-x11-devel libxkbcommon-devel
yum install -y libxkbfile libxkbfile-devel
yum install -y \
libXinerama-devel \
libXrandr-devel \
libXrender-devel \
libXt-devel \
libXv-devel \
libmng \
libpng-devel \
pciutils-devel \
libuuid-devel \
nss-devel \
mesa-libGLU \
libXtst-devel \
mesa-libGLU-devel \
pulseaudio-libs-devel \
systemd-devel \
libcap-devel \
alsa-lib-devel \
flex \
bison \
ruby \
expat-devel \
fontconfig-devel \
freetype-devel \
kde-filesystem \
libICE-devel \
libSM-devel \
libXcursor-devel \
libXft-devel \
libXi-devel \
unixODBC \
unixODBC-devel \
zlib-devel \
gperf \
libXcomposite-devel \
dbus-devel \
ninja-build \
snappy-devel \
mesa-libEGL-devel \
libvpx-devel \
libgcrypt-devel \
libgcrypt
此时我会选择卸载除了gcclib以外的gcc, 使用编译好的gcc6.5.0
rpm -e --nodeps gcc gcc-gfortran gcc-c++
第三部分: 代码准备
我在编译的过程中, 发现报错:
components/spellcheck/spellcheck_buildflags.h: No such file or directory
所以我们需要修改编译文件, 把下面的/root/qtsrc换成自己的qt源码主目录.
/root/qtsrc/qtwebengine/src/3rdparty/chromium/content/browser/BUILD.gn
在deps里添加
"//components/spellcheck:buildflags",
添加后完整如下:
deps = [
"//base",
"//components/spellcheck:buildflags",
"//content/browser/devtools:devtools_background_services_proto",
"//content/browser/devtools:protocol_sources",
"//content/common:buildflags",
"//third_party/inspector_protocol:crdtp",
]
第四部分: 开始编译
a) mkdir build && cd build
b) ../configure -opensource -confirm-license -release -nomake examples -xcb -openssl -I/usr/local/openssl -L/usr/local/openssl/lib --prefix=/opt/qt
c) make -j8
在编译过程会很多次遇到下面的错误, 如果没遇到, 那还是美滋滋的.
g++: internal compiler error: Killed (program cc1plus)
如果遇到上面错误不用管, 等编译结束后再执行make命令, 最好写个脚本, 死循环里执行命令.
#!/bin/bash
while [ true ]; do
make -j8
sleep 1
done
编译完成. 再执行make install进行安装.
结束.
结尾
感谢下面作者对我的启发.
CentOS7编译安装Qt5.9_centos7编译qtwebengine-CSDN博客
Centos 7.6 源码编译安装 GCC 10.3.0_gcc 10.3.0 c++14-CSDN博客