ERROR: flag ‘logtostderr‘ was defined more than once

0. 环境描述

· 编译环境:Ubuntu20.04 + ROS-noetic
· 运行工程:GVINS,香港科技大学开源项目

1. 问题描述

编译GVINS工程时出现opencv冲突警告,但能够顺利编译通过,roslaunch运行时出现问题

roslaunch gvins visensor_f9p.launch

process[gvins_feature_tracker-1]: started with pid [17467]
process[gvins-2]: started with pid [17468]
ERROR: flag 'logtostderr' was defined more than once (in files 'src/logging.cc' and '**/glog/src/logging.cc').
[gvins-2] process has died [pid 17468, exit code 1, cmd /home/zxq/Documents/24GVINS/catkin_ws/devel/lib/gvins/gvins __name:=gvins __log:=/home/zxq/.ros/log/5ce7fbfa-da9f-11ee-8edd-2974629c888e/gvins-2.log].
log file: /home/zxq/.ros/log/5ce7fbfa-da9f-11ee-8edd-2974629c888e/gvins-2*.log

2. 排查过程

经过问题搜索可知,是程序使用到了不同的GLOG库,所以造成了冲突。

通过动态库依赖查命令:ldd进行库依赖排查

GVINS自己生成的动态链接库有libgnss_comm.so;libgvins_camera_model.so

查看glog相关依赖:
ldd libgnss_comm.so | grep libglog

libglog.so.1 => /usr/local/lib/libglog.so.1 (0x00007f3e4a1ca000)

ldd libgvins_camera_model.so | grep libglog

libglog.so.0 => /lib/x86_64-linux-gnu/libglog.so.0 (0x00007fb5d0467000)

发现两者确实用到不同的GLOG库

分析是之前源码安装的GLOG库没有删干净,还存在usr/local/lib下,代码通过FindGlog.cmake文件会优先调用源码安装的GLOG库,而ROS又会调用apt-get安装的GLOG库,在lib/x86_64-linux-gnu下,所以出现冲突。

2.1解决方案

解决方案有两种:

  • 删除FindGlog.cmake文件或在cmakelist文件中指定GLOG库路径
  • 删除usr/local/lib/libglog.so
  • 15
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是Docker运行时的一个报错,提示我们在使用某个命令时提供了标志参数,但是这个标志参数并没有被定义。在Docker中,我们可以在运行容器时提供很多参数和标志来定制容器的行为,比如指定容器名称、端口映射、数据卷挂载等等。但如果这些参数或标志没有被正确定义或者不存在,就会导致类似这样的错误。 这个错误虽然描述简单,但是具体的原因可能比较复杂。比如可能我们在使用一个不存在的标志参数,或者我们使用了一个旧版本的Docker命令,而该命令现在已经被弃用或者更改了参数。此外,还有可能是我们运行时的环境出现了一些问题,比如Docker守护进程未正常启动、网络或文件系统发生了错误等。 针对这个错误,我们可以先检查我们所使用的参数或标志是否正确,以及是否存在拼写错误或缺失。我们可以参考官方文档或者其他参考资料,来查看具体命令和参数的使用情况。如果所有参数和标志都正确无误,我们还可以尝试重启Docker守护进程或者重新启动容器来解决问题。如果还不能解决问题,我们可能需要进一步排查Docker运行环境是否出现了其他错误或异常,以确定问题的根源。 总之,这个错误提示我们Docker在执行某个命令时发生了错误,而这个错误可能是由于参数或标志未正确定义、环境异常等原因引起的。在遇到这种情况时,我们需要认真检查参数和标志的使用情况,以及其他运行环境是否正常,来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值