婧鹅鹅鹅 2025-11-21 16:33 采纳率: 0%
浏览 3

升级系统相关内容报错

img


(base) one@admin:~$ rviz
rviz: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory
(base) one@admin:~$ gazebo
gzclient: error while loading shared libraries: libicui18n.so.58: cannot open shared object file: No such file or directory

前段时间升级了工控机的cmake和g++,cuda版本等,这些就都不能用了,请问怎么解决
Ubuntu18.04

img


急死我了

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2025-11-21 17:02
    关注

    下午好🌅🌅🌅
    本答案参考通义千问

    你遇到的问题是因为 Ubuntu 18.04 系统中缺少 libicui18n.so.58 这个共享库文件,导致 rvizgazebo 等程序无法正常运行。这个问题通常出现在升级了某些开发工具(如 CMake、g++、CUDA)后,系统依赖关系发生变化或缺失。


    ✅ 问题原因

    • libicui18n.so.58ICU (International Components for Unicode) 库的一部分,用于处理国际化和字符编码。
    • 在 Ubuntu 18.04 中,这个库的版本可能被更新或移除,导致旧程序找不到对应的动态链接库。
    • 升级 CMake、g++、CUDA 等工具可能导致系统环境发生了变化,影响了依赖库的路径或版本。

    🔧 解决方案

    1. 安装缺失的 ICU 库

    你可以尝试通过 apt 安装 libicu 的相关包:

    sudo apt update
    sudo apt install libicu-dev
    

    注意: 如果安装后仍然报错,可能是需要安装特定版本的 ICU 库(如 libicu58)。


    2. 手动安装特定版本的 ICU 库(如 libicu58)

    如果你确定需要的是 libicu58,可以尝试从 Ubuntu 的旧版本仓库中获取该库。

    步骤如下:

    1. 添加旧版本源(如 Ubuntu 16.04):

      sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse"
      sudo apt update
      
    2. 安装 libicu58:

      sudo apt install libicu58
      
    3. 安装完成后,可以删除旧源:

      sudo add-apt-repository --remove "deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse"
      sudo apt update
      

    ⚠️ 注意: 手动添加旧版本源可能会带来兼容性风险,建议仅在必要时使用。


    3. 创建软链接(临时解决方案)

    如果上述方法无效,你可以尝试查找系统中是否存在 libicui18n.so.58 或其类似版本,并创建软链接指向它。

    例如:

    # 查找是否有 libicui18n.so.58 或其他版本
    find /usr/lib -name "libicui18n.so*"
    
    # 假设找到了 libicui18n.so.60,可以创建软链接
    sudo ln -s /usr/lib/x86_64-linux-gnu/libicui18n.so.60 /usr/lib/x86_64-linux-gnu/libicui18n.so.58
    

    注意: 该方法是临时性的,不推荐长期使用,因为可能引起其他依赖问题。


    4. 重新安装 ROS 和 Gazebo

    由于你提到之前升级了 CMake、g++、CUDA,这可能影响了 ROS 和 Gazebo 的依赖关系。建议你重新安装 ROS 和 Gazebo。

    4.1 重新安装 ROS(以 Melodic 为例)

    sudo apt remove ros-melodic-*
    sudo apt autoremove
    sudo apt install ros-melodic-desktop-full
    source /opt/ros/melodic/setup.bash
    

    4.2 重新安装 Gazebo

    sudo apt remove gazebo*
    sudo apt install gazebo9
    

    注意: 如果你的 ROS 版本与 Gazebo 版本不匹配,可能会出现兼容性问题。


    5. 检查系统环境变量(LD_LIBRARY_PATH)

    确保系统能正确识别库路径:

    echo $LD_LIBRARY_PATH
    

    如果输出为空,可以手动设置:

    export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
    

    或者将该行添加到 ~/.bashrc 文件中,使其永久生效。


    🧠 总结

    | 步骤 | 操作 | |------|------| | 1 | 安装 libicu-dev | | 2 | 手动安装 libicu58(如需) | | 3 | 创建软链接(临时) | | 4 | 重新安装 ROS 和 Gazebo | | 5 | 检查并设置 LD_LIBRARY_PATH |


    🛠️ 示例代码(创建软链接)

    # 查找 libicui18n 的可用版本
    find /usr/lib -name "libicui18n.so*"
    
    # 假设找到的是 libicui18n.so.60
    sudo ln -s /usr/lib/x86_64-linux-gnu/libicui18n.so.60 /usr/lib/x86_64-linux-gnu/libicui18n.so.58
    

    📌 最终建议

    • 优先使用官方源安装依赖,避免手动下载和链接库。
    • 不要随意升级 CMake、g++、CUDA,除非你了解它们对 ROS/Gazebo 的影响。
    • 定期备份系统配置,避免因升级导致不可逆的问题。

    如果你愿意提供更详细的错误信息或系统日志,我可以进一步帮助你定位问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 11月21日