GTSAM各版本汇总及ubuntu20.04编译时遇到问题及方法总结

因为做项目接触到因子图算法,然后就步入了GTSAM这个坑(满满都是泪啊)
由于系统环境不兼容,下载编译我就浪费了不少时间/(ㄒoㄒ)/~~,在入门的友友们建议直接去看官网的编译流程,因为每个人系统环境不同,别人教程里省略的步骤可能你的环境就需要配置,一遍一遍重新下载真的难受;
因为想要仿真所以还勾选了gtsam的matlab的toolboox(gtsam有早些版本有现成的toolbox可以下载,但是现在没有了,需要自己下载源码cmake的时候勾选);

以下是总结的gtsam资源:

  • 在github上直接下载的别人编译好的gtsam3.0.2 matlab_toolbox,(我搬到了csdn上,跑过,win10下运行不成功显示key值不匹配,ubuntu20.04可以运行)

  • build好的gtsam4.0.2全部文件(可以重新build)

  • 下载gtsam源文件(作者bitbucket,无需gihub)

  • gtsam源文件(gihub版本)

  • 编译gtsam遇到问题的论坛(无需翻墙)

环境:-ubuntu20.04 -阿里源

  • 编译步骤
cd gtsam/build
cmake -DMEX_COMMAND=matlab/bin/mex \
      -DMATLAB_ROOT=matlab \
      -DGTSAM_INSTALL_MATLAB_TOOLBOX=ON -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..

//若之后要运行LIO-SAM则cmake步骤要稍微调整,如下所示:
//cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF …

make check  //可选
sudo make install 

Installing Matlab Toolbox to /usr/local/gtsam_toolbox

  • 所遇到问题:
[ 27%] Linking CXX shared library libgtsam.so
/usr/bin/ld: /usr/local/lib/libboost_serialization.a(basic_iarchive.o): relocation R_X86_64_PC32 against symbol `_ZTVN5boost7archive6detail14basic_iarchiveE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: 最后的链结失败: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [gtsam/CMakeFiles/gtsam.dir/build.make:1901:gtsam/libgtsam.so.4.0.0] 错误 1
make[1]: *** [CMakeFiles/Makefile2:3230:gtsam/CMakeFiles/gtsam.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2

[ 62%] Linking CXX shared library libgtsam.so
/usr/bin/ld: /usr/local/lib/libboost_serialization.a(basic_iarchive.o): relocation R_X86_64_PC32 against symbol `_ZTVN5boost7archive6detail14basic_iarchiveE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: 最后的链结失败: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [gtsam/CMakeFiles/gtsam.dir/build.make:1901:gtsam/libgtsam.so.4.0.0] 错误 1
make[1]: *** [CMakeFiles/Makefile2:3230:gtsam/CMakeFiles/gtsam.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
  • 解决方案
    第一种 (修改原始CMakeLists.txt文件)
    add_compile_options(-fPIC)
    第二种
    set(CMAKE_C_FLAGS“$ {CMAKE_C_FLAGS} -fPIC”)
    set(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} -fPIC”)

  • 所遇到问题:卸载环境中多版本的boost
    直接命令行安装的版本,也可以直接命令行卸载。
    卸载boost:

sudo apt-get autoremove package

(注:package为要卸载的boost的名称 示例:sudo apt-get autoremove libboost1.55-dev)

查看boost安装版本:

dpkg -S /usr/include/boost/version.hpp

手动下载安装包安装的查找方式:

sudo find /usr -name “libboost”

如果是安装最新版本的boost,直接执行如下命令:

sudo apt-get install libboost-all-dev

如果安装比较新的版本,首先查一下哪些版本还能直接命令行安装:

aptitude search boost

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
回答: 要在Ubuntu 20.04编译内核,可以按照以下步骤进行操作。 首先,在终端中打开/etc/apt/sources.list文件: ``` sudo gedit /etc/apt/sources.list ``` 在文件末尾添加以下两行内容以更新软件源: ``` deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe ``` 保存并关闭文件。 接下来,安装make-kpkg工具: ``` sudo apt install kernel-package ``` 然后,使用make-kpkg编译并生成deb安装文件。以下是一个示例命令: ``` sudo make-kpkg --initrd --append-to-version -20220228 --revision 001 kernel_image kernel_headers -j4 ``` 这个命令将生成内核映像和头文件的deb安装文件。可以根据需要修改命令中的版本号等参数。 最后,更新软件包列表并安装编译所需的依赖项: ``` sudo apt-get update sudo apt-get install gcc g sudo apt-get install libncurses5-dev sudo apt-get install build-essential sudo apt-get install kernel-package sudo apt-get install libssl-dev sudo apt-get install libc6-dev sudo apt-get install bin86 sudo apt-get install flex sudo apt-get install bison sudo apt-get install qttools5-dev sudo apt-get install libelf-dev ``` 完成上述步骤后,您可以根据需要对Ubuntu 20.04进行编译。请注意,这只是一个示例过程,您可能需要根据您的具体需求进行适当的修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [手把手一步步实现 Ubuntu20.04编译Android10系统源码](https://blog.csdn.net/h5630/article/details/127715207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux内核开发——编译Ubuntu 20.04内核代码](https://blog.csdn.net/feihe027/article/details/125424910)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值