You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在CentOS 7上安装Qt 5.15以编译依赖该版本特性的程序及用户端相关问题咨询

如何在CentOS 7上安装Qt 5.15以编译依赖该版本特性的程序及用户端相关问题咨询

嗨,我来帮你梳理下解决思路!CentOS 7官方软件源里的Qt版本确实停在了5.9,要用上Qt 5.15的特性来编译你的程序,有几个靠谱的方案,同时用户端的运行问题我也一并给你说明:

一、安装Qt 5.15到CentOS 7的可行方案

1. 使用Qt官方在线安装器(最推荐)

这个方法最省心,是官方维护的版本,还能灵活选择你需要的组件:

  • 先获取Qt官方在线安装器的Linux x64版本(可在Qt官方下载页面找到)
  • 给安装器添加执行权限:chmod +x qt-unified-linux-x64-*.run
  • 运行安装器:./qt-unified-linux-x64-*.run
  • 安装过程中,选择Qt 5.15.x系列的LTS版本(比如5.15.2,稳定性更好),然后勾选你需要的组件,比如Desktop gcc 64-bit、Qt Creator(如果需要开发IDE),以及你的程序依赖的Qt模块(比如Qt Widgets、Qt Network等)
  • 安装完成后,把Qt的bin目录添加到环境变量中。假设你安装路径是/opt/Qt5.15.2/5.15.2/gcc_64/bin,可以编辑~/.bashrc文件,添加一行:export PATH=/opt/Qt5.15.2/5.15.2/gcc_64/bin:$PATH,然后执行source ~/.bashrc让配置生效
  • 验证:执行qmake --version,如果显示Qt 5.15.x的版本,就可以正常编译你的程序了

2. 从源码编译Qt 5.15

如果官方安装器因为网络等问题无法使用,或者你需要自定义编译选项,源码编译是个不错的选择:

  • 先安装编译依赖:sudo yum install gcc gcc-c++ make cmake git libxcb-devel libx11-devel libxkbcommon-devel libxkbcommon-x11-devel mesa-libGL-devel freetype-devel fontconfig-devel perl
  • 获取Qt 5.15的源码:可以克隆官方仓库的指定分支,比如git clone -b 5.15.2 https://code.qt.io/qt/qt5.git,也可以直接下载源码压缩包
  • 进入源码目录,初始化子模块:cd qt5 && perl init-repository
  • 创建单独的编译目录并进入:mkdir build && cd build
  • 配置编译选项,示例如下(可根据需求调整,比如需要OpenGL就去掉-no-opengl):../configure -prefix /opt/Qt5.15.2 -release -opensource -confirm-license -xcb -no-opengl
  • 开始编译:make -j$(nproc)$(nproc)会自动使用所有CPU核心,加快编译速度)
  • 安装到指定路径:sudo make install
  • 同样需要将Qt的bin目录添加到环境变量,方法和上面一致

3. 第三方仓库(可选,谨慎使用)

部分社区维护的第三方仓库提供Qt 5.15的RPM包,比如一些扩展仓库,但这类包的稳定性和兼容性不如官方版本,还可能和系统自带的Qt 5.9产生冲突。如果要尝试,先添加对应仓库,再执行类似sudo yum install qt5-qtbase-devel qt5-qtdeclarative-devel的命令安装所需开发包,但优先推荐前两种方案。

二、动态链接情况下的用户端运行问题

因为你使用的是动态链接,用户运行你的程序时确实需要依赖Qt 5.15的库,这里提供几种解决方案:

  • 引导用户安装Qt 5.15运行库:用户可以通过官方在线安装器安装Qt 5.15的运行库,或者你可以告知他们将Qt的lib目录添加到LD_LIBRARY_PATH环境变量,比如export LD_LIBRARY_PATH=/opt/Qt5.15.2/5.15.2/gcc_64/lib:$LD_LIBRARY_PATH
  • 打包程序时附带依赖库:可以使用linuxdeployqt工具(专门为Qt程序打包的工具),它会自动收集程序所需的Qt库和其他系统依赖,打包到程序目录中。编译好程序后,执行linuxdeployqt your_program -appimage,生成的AppImage包用户无需额外安装Qt即可直接运行
  • 改为静态编译:如果改成静态链接,编译出的程序是单文件,用户不需要安装任何Qt库就能运行。但静态编译需要在编译Qt时添加-static配置选项,且部分Qt模块(如Qt WebEngine)静态编译难度较高;另外,开源软件静态链接Qt需遵守LGPL协议,要注意合规性

备注:内容来源于stack exchange,提问作者TSG

火山引擎 最新活动