ceres库交叉编译

ceres库交叉编译

在rk3399pro上测试cartographer建图的时候发现后端任务阻塞非常严重,导致基本没有回环的效果,查了好久才发现是使用的ceres库没有链接稀疏矩阵计算库SuiteSparse,只能用默认的DENSE_QR,求解过程非常慢,相差百倍的量级。交叉编译依赖SuiteSparse的ceres库非常麻烦,折腾了一天,试了好多方式后最终整理一下一个比较简单而且可行的方法,下面是编译的过程:

1、 安装依赖库

在笔记本Ubuntu下安装依赖库

1.1、安装 glog 和 gflags

sudo apt-get install libgoogle-glog-dev libgflags-dev

1.2、安装 BLAS 和 LAPACK

sudo apt-get install libatlas-base-dev

1.3、安装 eigen

sudo apt-get install libeigen3-dev

1.4、安装 SuiteSparse 和 CXSparse

sudo apt-get install libsuitesparse-dev

2、下载ceres源码和编译

2.1、下载源码

git clone https://github.com/ceres-solver/ceres-solver.git

2.2、配置编译器
在ceres源码工程的CMakeLists.txt文件中添加如下内容:

SET(TOOLCHAIN_DIR "/home/yps/rk3399pro_sdk") # 根据自己实际的SDK目录进行设置
SET(CMAKE_Fortran_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gfortran)
SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/aarch64-linux-gnu-g++)

2.3、将 glog 和 gflags 的头文件拷贝到ceres源码工程(如果在编译的时候报错找不到glog.h文件时执行此操作)
从系统 /usr/include/ 目录将 glog 和 gflags 文件夹拷贝到ceres源码工程的include文件夹下

2.4、进入ceres源码目录,编译ceres库

mkdir build && cd build
cmake .. 
make -j4

如果执行cmake ..后看到输出如下信息则说明成功链接SuiteSparse库:

-- Found SuiteSparse: TRUE (found version "5.7.1")
-- Found SuiteSparse 5.7.1, building with SuiteSparse.
-- Found CXSparse: /usr/include/suitesparse (found version "3.2.0")
-- Found CXSparse version: 3.2.0, building with CXSparse.

如果输出是Not Found则是没有成功链接。

当编译输出构建完成 libceres.a 时则可以在 build/lib 目录找到ceres库。
整个源码工程的编译还会编译一些测试的程序,可能编译的时候会出现报错,但是不重要,当成功编译出 libceres.a 时已经可以终止编译了。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值