CentOS 6/7 安装Qt环境
基本环境
系统:64位 CentOS 6.10 / CentOS 7.6
Qt 需求
- Qt-5.7 / Qt5.12
- gcc-4.7 或以上
- python-2.7
- CMake-3 以上
- 支持 python-2.7 的 gdb
- opengl 开发组件
安装步骤
# 以下步骤请全部基于root权限进行
# 基本工具包括 wget、yum、xz、tar,如果是以上的系统源的话应该会有的,如果没有则需要自行安装
# 步骤中不修改环境变量,通过创建软链接到 /usr/bin 或者 /usr/local/bin 中代替
0. yum源
2020年11月,CentOS6被扫进了历史的垃圾堆,因此旧yum源全部失效,需要使用Vault源。
可以参考这个链接进行替换 https://blog.csdn.net/qq_41938046/article/details/110920247。
建议使用阿里云的源 http://mirrors.aliyun.com/centos-vault/
1. 安装基本开发工具组
参考链接 https://www.cnblogs.com/zlslch/p/6033284.html
yum -y groupinstall Development tools
2. 安装 gcc-4.8.2
参考链接 https://blog.csdn.net/dijkstar/article/details/82218170
CentOS-6 默认安装的 gcc 版本是 4.4.7,是不支持 c++11 的,因此需要提升到 4.7 以上的版本,这里选择 4.8.2 是因为安装方便而已。
CentOS-7 默认是 4.8.5,可以跳过此步。
wget http://people.centos.org/tru/devtools-2/devtools-2.repo
mv devtools-2.repo /etc/yum.repos.d
yum -y install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++
# 将原有的程序作备份
mv /usr/bin/gcc /usr/bin/gcc-4.4.7
mv /usr/bin/c++ /usr/bin/c++-4.4.7
mv /usr/bin/g++ /usr/bin/g++-4.4.7
# 创建软链接
ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc
ln -s /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++
ln -s /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++
# 查看版本号,如果显示4.8,则成功
gcc --version
g++ --version
c++ --version
# 使用软连接的方式是会覆盖掉原来的gcc指向的,如果想要更大的灵活性,建议使用如下的方式替代
source /opt/rh/devtoolset-2/enable
3. 安装 python-2.7
CentOS-7 默认安装的 python 是 2.7.5 版本的,这里可以跳过
wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tar.xz
xz -d Python-2.7.11.tar.xz
tar -xvf Python-2.7.11.tar
cd Python-2.7.11
./configure --prefix=/opt/python-2.7.11/
make
make install
# 这里不要把 python2.7 的链接改名为 python,
# 因为 yum 是基于原有版本的 python 的,
# 修改的话需要重新指向 yum 使用的 python
ln -s /opt/python-2.7.11/bin/python2.7 /usr/bin/
# 查看版本号
python2.7 --version
4. 安装 CMake-3.14.4
选择这个版本是因为这个是当前最新的版本。
wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
tar -xvf cmake-3.14.4.tar.gz
cd cmake-3.14.4
./bootstrap --prefix=/opt/cmake-3.14.4/
make
make install
# 如果已存在 /usr/bin/cmake,参照安装 gcc 的部分做个备份
mv /usr/bin/cmake /usr/bin/cmake.bak
ln -s /opt/cmake-3.14.4/bin/cmake /usr/bin/
# 查看版本号
cmake --version
5. 安装 gdb
CentOS-6/7 都有默认安装的 gdb,虽然版本不同,但是都不适用,因为Qt需要支持 python 的 gdb,所以需要重新安装,在安装配置的时候添加上支持 python。选择这个版本的 gdb 是因为这个是当前最新的版本,而这个版本的 gdb 要求的 python 版本是2.7+,所以才有第2步安装python-2.7。
wget ftp://sourceware.org/pub/gdb/releases/gdb-8.3.tar.xz
xz -d gdb-8.3.tar.xz
tar -xvf gdb-8.3.tar
cd gdb-8.3
./configure --prefix=/opt/gdb-8.3/ --with-python='/usr/bin/python2.7'
make
make install
# 如果已存在 /usr/bin/gdb,参照安装 gcc 的部分做个备份
mv /usr/bin/gdb /usr/bin/gdb-7.2
ln -s /opt/gdb-8.3/bin/gdb /usr/bin/
# 查看版本号
gdb --version
6. 安装 Qt
Qt安装需要在可视化图形界面下安装,如果没有GNOME或其他X11界面的话需要先安装并启用。
CentOS-6 支持的 Qt 版本为从 Qt-4 到 Qt-5.7,再高的时候安装会报错,报错信息像下边这样,不过这段没什么意义,因为错误信息无法解析。
Error during installation process (qt.qt5.5123.gcc_64): The output of /opt/Qt/5.12.3/gcc_64/bin/qmake -query is not parseable.
这时候看安装详细信息能看到需要el7什么的,el7指的是CentOS-7的环境。
CentOS-7 支持 Qt-5.8 或以上,最新稳定版本是 5.12.3,5.13还在测试中。
Qt 的各版本可以去Qt的下载中心 http://download.qt.io/ 自行寻找,使用wget下载即可,下载完记得使用 chmod a+x 获得执行权限。
Qt-5.7.1 离线安装版 http://download.qt.io/archive/qt/5.7/5.7.1/qt-opensource-linux-x64-5.7.1.run
Qt-5.12.3 离线安装版 http://download.qt.io/archive/qt/5.12/5.12.3/qt-opensource-linux-x64-5.12.3.run
Qt-5.12.3 线上安装版 http://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run
在线安装程序随时间可安装的版本不同,目前可选的是 5.12.3 和 5.11。
安装的时候是图形化界面安装,记得把source选上,这个是源代码,一些插件需要自己构建的时候要用到,比如使用mysql的时候。
7. 其他
-
安装 OpenGL 开发库
yum -y install mesa* freeglut*
-
安装 OpenCV 开发库
yum -y install opencv opencv-devel
-
安装 mysql 开发库
要在Qt中使用mysql,需要mysql自身的库和qtsqlmysql插件(也称作Qt的mysql驱动),可参考
https://www.cnblogs.com/yongqiang/p/6121515.htmlyum -y install mysql mysql-devel cd /opt/Qt5.7.1/5.7/Src/qtbase/src/plugins/sqldrivers/mysql/ qmake make
make 之后会产生 libqsqlmysql.so,注意看最后打印的路径,我的是在这里:
/opt/Qt5.7.1/5.7/Src/qtbase/plugins/sqldrivers/libqsqlmysql.so
使用的时候将sqldrivers文件夹一起拷到应用程序目录即可 -
提高glibc版本
glibc是linux的基础组件,一般情况下不建议升级,这里以glibc-2.17版本为例做个参考。wget http://ftp.gnu.org/gnu/libc/glibc-2.17.tar.gz tar -xvf glibc-2.17.tar.gz cd glibc-2.17 mkdir build cd build ../configure --prefix=/usr make make install strings /lib64/libc.so.6 |grep GLIBC
-
Qt linux 程序打包发布
参考链接 https://blog.csdn.net/u014746574/article/details/79288727
这篇文章里有一个脚本:#!/bin/sh bin=$1 #发布的程序名称 desDir="./lib" #你的路径 if [ ! -d $desDir ];then #echo "makedir $desDir" mkdir $desDir fi libList=$(ldd $bin | awk '{if (match($3,"/")){ printf("%s "),$3 } }') cp $libList $desDir
将这个脚本保存为 copylib.sh,使用 chmod a+x 获得执行权限,移动到 /usr/bin/ 下,就可以在目标程序所在目录中调用了。调用后会在目标程序旁边创建一个目录 lib,里面执行所需的库基本都有了,不使用 linuxdepoyqt 也是可以的。