一、ORB-SLAM2
1.c++ error: ‘decay_t’ is not a member of ‘std’
如下图所示:
解决方法:
修改 ORB_SLAM的 CMAKELIST.txt文件,
将set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
修改为 set(CMAKE_CXX_STANDARD 14)
2. /usr/bin/ld: 找不到 -lEigen3::Eigen
Eigen库不同于一般的库,它只有头文件,没有.so和 .a 二进制库文件
解决方法:
CMakeLists.txt中添加find_package(Eigen3 3.3.7 REQUIRED NO_MODULE)
如下图所示,其中,3.3.7为自己eigen安装版本。
3.error while loading shared libraries: libpango_windowing.so: cannot open shared object file
运行时,遇到error while loading shared libraries: libpango_windowing.so: cannot open shared object file
解决方法:
执行一下如下命令:
sudo ldconfig
补充:
ldconfig命令是一个在Linux系统上执行的实用程序,用于配置共享库的运行时链接。当在Linux上安装新的共享库文件时,或者在已安装的共享库文件的位置发生变化时,ldconfig命令可以更新系统中的共享库缓存,以便动态链接器能够正确找到和加载共享库。
ldconfig的主要作用如下:
- 更新共享库缓存:ldconfig命令会扫描默认的共享库搜索路径(如/etc/ld.so.conf文件中所定义的路径),并将找到的共享库路径添加到缓存中。这样,当应用程序在运行时需要链接共享库时,动态链接器可以快速地找到并加载相应的库。
- 解决共享库依赖:共享库通常会依赖于其他共享库。ldconfig命令通过查找并加载这些依赖项,解决了应用程序与共享库之间的依赖关系。
- 管理多个版本的共享库:在某些情况下,系统可能会安装多个版本的同一共享库。ldconfig可以处理这种情况,并根据系统配置文件中的设置选择正确的共享库版本。
- 配置自定义共享库搜索路径:通过修改/etc/ld.so.conf文件,可以添加自定义的共享库搜索路径。ldconfig命令在执行时会读取该文件,并将其中指定的路径添加到共享库缓存中。
总之,ldconfig命令用于维护和更新Linux系统中的共享库缓存,以确保应用程序可以正确地找到并链接所需的共享库。