在xcode中编译 orb-slam2 遇到很多坑 这里记录一下
1. g2o 编译的时候 提示 tr1/xxx.h 找不到
去掉tr1 引用std::tr1 -> std::
2.#include<stdint-gcc.h> 找不到
去掉即可
3.usleep找不到 添加头文件
#include <unistd.h>
4.map中报Allocator::value_type must be same type as value_type 类型不匹配的错误
loopclosing.h 中 const KeyFrame * - > KeyFrame *const
5.YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXB 报错时
见 https://blog.csdn.net/desirev/article/details/52790869
编译成功后,配置好参数和数据路径,在mac上直接运行会崩溃,
理由是osx 窗口程序初始化不能在线程中执行,所以需要调整
https://github.com/tlglovewf/ORB_SLAM2
上面是针对mac 调整后的版本,编译过程就不详解了
https://github.com/tlglovewf/VINS_NO_ROS
VINS_MONO 去ROS Mac版本
下面这个链接是VIORB NOROS MAC版本的适配,有感兴趣的也可以参考下
https://github.com/tlglovewf/VIORB_NOROS_MAC
ps: 如果使用vscode + cmake 在mac上编译相关内容 如果提示
cv 或者其他三方链接库 相关符号找不到 如果确认cmakelist中加入了链接路径
有可能的原因是 vscode cmake工具中编译器选错了
在控制台里编译的 默认应该是clang++ 编译生成的lib库 所以在vscode cmake中使用的编译器应该是选clang++
设置方式:
command+p 弹出命令框 输入>select a kit 选择clang++
另外:如果osx下 如果cmake不能正常工作 可以考虑在cmakelist中加入
if(CMAKE_HOST_APPLE)
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
cmake_policy(SET CMP0042 NEW)
endif()