写在前面
自己的测试环境:
Ubuntu20.04
一、问题描述
自己使用 GeographicLib 编译程序的时候出现如下报错:
/usr/bin/ld: libxxx.so: undefined reference to `double GeographicLib::Math::AngNormalize<double>(double)'
collect2: error: ld returned 1 exit status
二、解决方法
出现这个报错的原因你,首先要检查是不是 GeographicLib 库的未能正确索引导致的。
find_package (GeographicLib REQUIRED)
include_directories(${GeographicLib_INCLUDE_DIRS})
target_link_libraries(xxx_node ${GeographicLib_LIBRARIES}) # 或者 ${GeographicLib_LIBRARY} 都可以
如果检查了自己的 CMakeLists.txt 发现,自己的所以是正确的的,但是依旧出现上述报错,那么很有可能就是 GeographicLib 库 的版本不对。
目前自己安装的是 GeographicLib-2.0
,编译程序会出现报错,卸载 GeographicLib-2.0
之后,然后重新下载 GeographicLib源码进行安装 GeographicLib-1.50
,然后再次编译,就可以编译成功了。
参考链接
[1] geographiclib. GeographicLib 源码下载链接, https://github.com/geographiclib/geographiclib/tags, 2023-07-25/2024-06-23.