RHEL7/CentOS7安装smplayer启动遇到smplayer: symbol lookup error: /lib64/libQt5XcbQpa.so.5: undefined symbol

本文解决在RHEL7/CentOS7环境下smplayer播放器启动时报错的问题,通过更新freetype库修复了FT_Get_Font_Format未定义符号错误,确保了smplayer的正常运行。

在RHEL7/CentOS7安装安装smplayer后遇到无法启动的问题,开始是下载rpm安装的,遇到问题,然后参考别人的文章,使用yum install smplayer安装,能成功安装。但是启动报错:
[user1@spring ~]$ smplayer
这是运行在 Linux 上的 SMPlayer v. 18.6.0 (修订版 9075)

smplayer: symbol lookup error: /lib64/libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format

解决方法一

可参考文章《centos7上安装smplayer播放器》
https://blog.youkuaiyun.com/longzhutengyue/article/details/84782330
安装
yum install libQt5Core.so.5

事先备份系统,采用如下命令:

run as root user

stamp=date +%Y-%m-%d_%H-%M-%S
tar --selinux --acls --xattrs -cvPzf /mnt/mint_data/backup_redhat/Redhat_after_install_sogou_pinyin_2020-04-30/root.tar.gz / --exclude=/CAN_DELETE --exclude=/proc --exclude=/mnt --exclude=/run/user/1000 > backup_redhat_$stamp.log

这个方法,我使用后,不知道为何,系统启动后在图形界面无法进入了,可以输入密码,然后再次变成图形登录界面,也能验证登录,不是SELinux的问题,可能是图形库QT出问题。搞不清楚,次日,恢复备份,注意,恢复备份后需要手工建立proc目录,还有 touch /.autorelabel,这样SELinux才会正常。
我的情况,方法一不能使用!。改用方法二。

解决方法二

检查发现有不同版本的图形库 freetype,执行更新 freetype。
“On RHEL 7.4, the freetype package is freetype-2.4.11-15.el7.x86_64.rpm which defines the symbol FT_Get_X11_Font_Format but not FT_Get_Font_Format。”
[user1@spring lib64]$ sudo yum list |grep freetype
[sudo] user1 的密码:
freetype.x86_64 2.4.11-15.el7 @anaconda/7.5 [这个是导致问题的原因]
freetype.i686 2.8-14.el7 base
freetype.x86_64 2.8-14.el7 base
freetype-demos.x86_64 2.8-14.el7 base
freetype-devel.i686 2.8-14.el7 base
freetype-devel.x86_64 2.8-14.el7 base
freetype-freeworld.i686 2.5.0.1-4.el7.nux nux-dextop
freetype-freeworld.x86_64 2.8-12.el7.nux nux-dextop
freetype-freeworld-debuginfo.i686 2.5.0.1-4.el7.nux nux-dextop
freetype-freeworld-debuginfo.x86_64 2.8-12.el7.nux nux-dextop
python-freetype.noarch 0.4.2-2.el7 epel

sudo yum update freetype

smplayer版本: 18.6.0 (修订版 9075)
这个方法可用。重启动后也能进入图形界面。
参考文章:
Super User
《Qt startup error: symbol lookup error: libQt5XcbQpa.so.5: undefined symbol: FT_Get_Font_Format》

当用户遇到 `systemctl` 报错 `symbol lookup error: libkysec.so.0: undefined symbol: kysec_log_v2` 时,这表明系统在加载动态链接库 `libkysec.so.0` 时无法找到符号 `kysec_log_v2`。此类错误通常与库版本不兼容、库路径配置错误或依赖项缺失有关。 ### 常见原因及分析 1. **库版本不匹配** 动态链接库 `libkysec.so.0` 的版本可能与调用它的程序或服务不兼容。例如,程序可能期望某个特定版本的 `libkysec` 库,但系统中安装的版本缺少所需的符号 `kysec_log_v2`。这可能是由于库更新后删除或更改了该符号,或程序依赖旧版本的接口。 2. **库路径配置错误** 系统可能未正确配置动态链接器的搜索路径,导致加载了错误版本的库。动态链接器通常通过 `/etc/ld.so.conf` 和 `/etc/ld.so.conf.d/` 中的配置文件确定搜索路径。如果 `libkysec.so.0` 的正确版本不在这些路径中,系统可能加载了错误的库文件。 3. **依赖项缺失或损坏** `libkysec.so.0` 可能依赖于其他库文件,而这些依赖项未正确安装或已损坏。这种情况下,即使 `libkysec.so.0` 存在,也可能无法正常加载其符号。 4. **缓存未更新** Linux 系统使用 `ldconfig` 工具维护动态链接库的缓存。如果库文件已更新或安装新版本但未运行 `ldconfig`,系统可能仍然使用旧的缓存信息,导致符号查找失败。 ### 解决方案 1. **检查库版本及符号存在性** 使用 `nm` 或 `objdump` 工具检查 `libkysec.so.0` 是否包含所需的符号 `kysec_log_v2`: ```bash nm -D /path/to/libkysec.so.0 | grep kysec_log_v2 ``` 如果未找到该符号,说明当前库版本不包含所需的函数或变量,需升级或降级至兼容版本。 2. **验证库路径配置** 确认 `libkysec.so.0` 的正确路径已添加至动态链接器配置中: ```bash echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/kysec.conf sudo ldconfig ``` 上述命令将 `/usr/local/lib` 添加到动态链接器的搜索路径中,并更新缓存。 3. **重新安装或更新库文件** 如果库文件损坏或版本不兼容,尝试重新安装或更新 `libkysec` 包。具体命令取决于所使用的 Linux 发行版: - **Debian/Ubuntu**: ```bash sudo apt update sudo apt install --reinstall libkysec0 ``` - **CentOS/RHEL**: ```bash sudo yum reinstall libkysec ``` 4. **检查依赖项完整性** 使用 `ldd` 检查 `libkysec.so.0` 的依赖项是否完整: ```bash ldd /path/to/libkysec.so.0 ``` 如果发现缺失或未找到的依赖项,需安装相应的库文件。 5. **确认服务或程序兼容性** 如果问题仅在特定服务(如 `systemctl`)启动时出现,需确认该服务是否与当前 `libkysec` 版本兼容。可查阅服务的官方文档或社区支持资源,确认推荐的库版本。 ### 示例:更新库路径并重建缓存 ```bash # 添加库路径到配置文件 echo '/opt/kysec/lib' | sudo tee /etc/ld.so.conf.d/kysec.conf # 更新动态链接库缓存 sudo ldconfig ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值