最近在用ceres做BA,编译过后运行时报错ERROR: flag ‘logtostderr‘ was defined more than once
是因为电脑中有多个版本的glog导致。
先用动态库依赖查命令:ldd进行库依赖排查
ldd ./Demo | grep libglog
会出现如下形式的结果:
libglog.so.0.3.5 => /usr/local/lib/libglog.so.0.3.5 (0x00007f1c558be000)
左侧是你运行的代码,这里确认依赖库的路径是否正确,此前我这里依赖到anconda里面的glog了,所以会一直报错。
解决方法:
1.删除多余的glog版本。
2.在Cmakelist文件中直接直接指定GLOG库的路径。
include_directories(${PCL_INCLUDE_DIRS}
/usr/local/include
${GFLAGS_INCLUDE_DIR})
link_directories(${PCL_LIBRARY_DIRS}
/usr/local/lib)
3.确定想要使用的 libglog
库的位置。更新 LD_LIBRARY_PATH
环境变量,使其首先搜索正确的 libglog
库路径
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH