centos下命令行编译Qt应用程序
centos7下手动编译Qt5的程序
需要Qt5的源代码编译出Qt5在linux下的可执行环境,怎么编译这个以后再说,https://wiki.qt.io/Building_Qt_5_from_Git
我直接用的别人编译好的5.9.9版本
然后,将这个环境拷贝到centos某个目录下,我放到主目录下
设置环境变量
编写一个文本文件叫 qt-5.9.9-env ,内容是
export PATH=/home/fan/qt-5.9.9/bin:$PATH export LD_LIBRARY_PATH=/home/fan/qt-5.9.9/lib:$LD_LIBRARY_PATH export QT_PLUGIN_PATH=/home/fan/qt-5.9.9/plugins export QMAKESPEC=/home/fan/qt-5.9.9/mkspecs/linux-g++ export QT_IM_MODULE=xim
这里的/home/fan/qt-5.9.9就是我编译的Qt环境
这里将Qt5.9.9的可执行文件目录,库目录,插件目录都导出
指定编译环境为linux-g++
输入模块xim
然后在命令行下执行
source qt-5.9.9-env
在windows下的Qt Creator里新建一个工程test,将工程里的 .cpp .h .ui .pro拷贝到centos里的一个单独的文件夹下比如
/home/fan/testQt5
test.pro文件的内容如下
QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 SOURCES += \ main.cpp \ mainwindow.cpp HEADERS += \ mainwindow.h FORMS += \ mainwindow.ui
然后shell切换到这个目录下,执行
qmake
在PATH环境变量找到qmake,而编译配置是通过QMAKESPEC环境变量找到的,
qmake读取当前文件夹下的.pro文件,生成Makefile文件,Qt3和Qt4,Qt5的.pro文件语法有很大不同,如果直接用Qt3的.pro文件可能会有问题
然后执行
make
就会出现 test 这个可执行文件
执行
./test
可能你那里会报错,我这里就报错了,提示找不到GL库,这个其实是OpenGL库。
有2个办法解决,先说靠谱的,执行如下命令安装opengl库
yum install mesa-libGL-devel
还有一个办法,不太靠谱,建议参考就行,不要用
在 centos7 的 /usr/lib64下,会找到一个库文件叫libGL.so.1.7.0
建立软连接
ln -s /usr/lib64/libGL.so.1.7.0 /usr/lib64/libGL.so
然后切回/home/fan/testQt5目录执行
./test
就可以正常显示程序了
因为是界面程序,所以会用到xcb库,这个库好像是在QT_PLUGIN_PATH环境变量路径下,也可能调用的依赖库在这里,反正不指定这个,程序运行就崩溃了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话