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

同版本Ubuntu下Qt C++程序无法运行:库缺失及安装后仍报错

解决Qt C++程序在Ubuntu上运行缺失库及Qt Creator安装错误的问题

一、先搞定运行时缺失Qt库的问题

你碰到的找不到libQt5PrintSupport.so.5libQt5Core.so.5这些库的情况,大概率是系统没识别到Qt的安装路径,或者程序编译时依赖的本地Qt库,在目标机器上的路径没配置对。试试下面几个办法:

1. 确认Qt库的实际位置并配置系统路径

先找到Qt库的安装目录,默认一般在/opt/Qt/5.x.x/gcc_64/lib(把x.x.x换成你用的Qt版本号,比如5.15.2)。用命令快速定位:

find / -name "libQt5Core.so.5" 2>/dev/null

找到路径后,把它添加到系统的库配置里:

echo "/opt/Qt/5.x.x/gcc_64/lib" | sudo tee /etc/ld.so.conf.d/qt5.conf
sudo ldconfig

配置完再运行你的程序,应该就能找到库了。

2. 用ldd检查程序依赖的库状态

运行ldd 你的程序文件名,看看那些显示not found的库是真没装,还是路径不对。如果库已经装了但路径不被识别,可以手动创建软链接:

sudo ln -s /opt/Qt/5.x.x/gcc_64/lib/libQt5Core.so.5 /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

注意替换成你实际的Qt库路径和系统架构(比如x86_64或者arm)。

3. 编译时用静态链接彻底摆脱依赖

如果不想在目标机器折腾Qt安装,编译程序时可以用静态链接。在Qt Creator的.pro文件里加一行:

CONFIG += static

然后重新编译,这样程序会把Qt库直接打包进去,运行时就不用依赖系统的Qt库了。不过缺点是程序体积会变大,还要注意Qt的开源协议要求哦。

二、解决Qt Creator安装时的函数重定义错误

这个错误通常是因为系统里已经有其他版本的Qt库、C++库,和Qt Creator的预编译文件冲突了。试试这些步骤:

1. 彻底清理旧的Qt相关安装包

先把之前装的Qt Essentials、Qt Base、Qt Creator全卸载干净:

sudo apt purge qt* qtcreator*
sudo apt autoremove
sudo apt autoclean

再手动删掉残留的配置和安装目录:

rm -rf ~/.config/QtProject/
rm -rf /opt/Qt/

2. 从Qt官方渠道重新安装Qt Creator

别用Ubuntu默认的apt源装Qt Creator,版本不对或者依赖冲突概率很高。去Qt官网下载和你开发时同版本的Qt安装包,运行安装程序时,选择对应版本的Qt组件和Qt Creator,安装路径尽量选默认或者全新的路径,避免和旧路径冲突。

3. 检查并统一编译器版本

函数重定义也可能是gcc/g++版本不一致导致的。运行gcc --versiong++ --version,确认目标机器的编译器版本和你开发时的尽量一致。如果版本差太多,就安装对应版本的编译器:

sudo apt install gcc-9 g++-9  # 比如你开发时用的是gcc9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 100

总结

优先解决库路径的问题,要么配置系统识别Qt库路径,要么用静态链接打包库。Qt Creator安装尽量选官方包,避开apt源的依赖坑。如果还是有问题,可以检查程序编译时的环境变量,确保目标机器的Qt环境和开发机器完全匹配。

内容的提问来源于stack exchange,提问作者user6364231

火山引擎 最新活动