首先可以确定,libfmt.so.9.1.0 是有GLIBCXX_3.4.29
查阅资料,可能是fmt.so.9.1.0的版本过高导致的,有兴趣的朋友可以降低版本试一试。
我的解决方法是,安装非模板类的Sophus 。
可以看到,报错的是fmt这个库文件,而模板类Sophus是依赖于这个库的,所以我选择安装不依赖fmt的非模板类的Sophus。
问题又来了,网上现有的安装非模板类的Sophus的方法是
git checkout a621ff
加上这么一段代码,但是实际运行起来是报错的。查阅Sophus的git发现作者已经直接给出了安装非模板类的方法:
The fmt dependency can be eliminated by passing "-DUSE_BASIC_LOGGING=ON" to cmake when configuring Sophus.
在cmake时加上 -DUSE_BASIC_LOGGING=ON ,OK 加上!
调试出错
????????????什么情况
然后我看了一下CmakeLists.txt 尼马判断条件是这个:
if(SOPHUS_USE_BASIC_LOGGING OR NOT TARGET fmt::fmt)
# NOTE fmt_FOUND does not seem to be defined even though the package config
# was found.
target_compile_definitions(sophus INTERFACE SOPHUS_USE_BASIC_LOGGING=1)
message(STATUS "Turning basic logging ON")
else()
target_link_libraries(sophus INTERFACE fmt::fmt)
set(fmt_DEPENDENCY "find_dependency (fmt ${fmt_VERSION})")
message(STATUS "Turning basic logging OFF")
endif()
也就是说,需要加上的是:-DSOPHUS_USE_BASIC_LOGGING=ON ,
调试成功,make不报错了!!!!!!
作者大人,您更新一下git吧QAQ