编译依赖Gazebo9的ROS包后Gazebo9无法启动的修复咨询
修复Gazebo9启动时的符号查找错误
先排查版本冲突问题
这个错误是因为系统里的ignition-fuel-tools库版本不匹配——Gazebo9依赖的是ignition-fuel-tools2,编译ROS包时大概率引入了更高版本的同系列库,导致动态链接时找错了文件。
先确认系统里的安装情况:
dpkg -l | grep ignition-fuel-tools
如果输出里有ignition-fuel-tools3或更高版本,那就是冲突根源。
临时修复(快速验证)
直接强制Gazebo加载正确的库文件,执行:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libignition-fuel-tools2.so gazebo --verbose
如果能正常启动,说明就是库路径优先级的问题,接下来可以做持久化修复。
持久化修复方法
方法1:调整系统库加载优先级
- 创建一个专门的配置文件,指定Gazebo9依赖库的优先加载路径:
sudo nano /etc/ld.so.conf.d/gazebo9.conf
- 把下面两行粘贴进去:
/usr/lib/x86_64-linux-gnu/ignition/fuel_tools2/ /usr/lib/x86_64-linux-gnu/
- 更新系统库缓存:
sudo ldconfig
之后直接启动gazebo应该就能正常运行了。
方法2:修改Gazebo启动脚本
找到Gazebo的启动脚本(一般在/usr/bin/gazebo),编辑它:
sudo nano /usr/bin/gazebo
在脚本开头的#!/bin/bash下面添加一行:
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libignition-fuel-tools2.so:$LD_PRELOAD
保存退出后,每次启动Gazebo都会自动加载正确的库。
从根源解决:检查ROS包依赖
去看你编译的ROS包的package.xml和CMakeLists.txt,如果里面明确依赖了ignition-fuel-tools的高版本(比如3.x),把它改成ignition-fuel-tools2,然后重新编译包,避免以后再出现冲突。
内容的提问来源于stack exchange,提问作者distro
相关产品推荐
相关产品推荐

