当前位置: 首页 > news >正文

Arm Linux ceres库编译

由于工作需要,需在国产化系统上编译ceres库,手上有一块树莓派,就在树莓派上面进行测试编译ceres库,总体来说比较顺利。只出现了一点小问题
参考链接:
Ceres中文教程-安装

按照上面Linux编译过程

目录

    • 1、在线安装依赖项
      • 1.1、安装CMake
      • 1.2、安装google-glog + gflags
      • 1.3、安装 BLAS & LAPACK
      • 1.4、安装 Eigen3
      • 1.5、安装SuiteSparse
    • 2、编译ceres库
      • 2.1下载ceres库源代码
      • 2.2 编译
        • 异常1、缺少absl库
        • 解决方案:
        • 异常2、缺少GTest库
        • 解决方案:
      • 2.3、继续编译
        • 异常3、missing Abseil version
        • 解决方案:

1、在线安装依赖项

1.1、安装CMake

sudo apt-get install cmake

1.2、安装google-glog + gflags

sudo apt-get install libgoogle-glog-dev

1.3、安装 BLAS & LAPACK

sudo apt-get install libatlas-base-dev

1.4、安装 Eigen3

sudo apt-get install libeigen3-dev

1.5、安装SuiteSparse

sudo apt-get install libsuitesparse-dev

2、编译ceres库

2.1下载ceres库源代码

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

2.2 编译

首先说明,编译结果想单独放在某个文件夹中,按照我的习惯,喜欢在源码中新建build文件夹,然后将所有编译的输出都放到build中

cd ceres-solver
mkdir build
cmake ..

注意,在cmake …容易出错(我是按照参考链接的过程进行编译的)。依次存在下面两个问题,所以在安装库前可以先把下面两个问题的源码也同样编译一遍

异常1、缺少absl库

异常输出:

CMake Error at CMakeLists.txt:173 (find_package):
  By not providing "Findabsl.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "absl", but
  CMake did not find one.

  Could not find a package configuration file provided by "absl" with any of
  the following names:

    abslConfig.cmake
    absl-config.cmake

  Add the installation prefix of "absl" to CMAKE_PREFIX_PATH or set
  "absl_DIR" to a directory containing one of the above files.  If "absl"
  provides a separate development package or SDK, be sure it has been
  installed.

在这里插入图片描述

解决方案:

参考链接:
在ubuntu安装c++版本的absl库

第一步、下载abseil库

git clone https://github.com/abseil/abseil-cpp.git

第二步、编译

cd abseil-cpp
mkdir build
cd build

cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j
sudo make install

这将会将 absl 安装到 /usr/local 目录下。

安装完成后,您可以在 C++ 代码中使用 absl。例如:


#include <iostream>
#include "absl/strings/str_cat.h"
 
int main() {
  std::string s = absl::StrCat("Hello, ", "world!");
  std::cout << s << std::endl;
  return 0;
}

编译时需要链接 absl 库,例如:

g++ -o main main.cpp -labsl_strings

异常2、缺少GTest库

继续cmake编译的时候,出现了异常2,异常输出

Could NOT find GTest (missing: GTEST_LIBRARY GTEST_INCLUDE_DIR
  GTEST_MAIN_LIBRARY) (Required is at least version "1.14.0")

在这里插入图片描述

解决方案:

参考链接:
gtest教程(记录小白从0学习gtest的过程)

下载GTest源码(码云)

git clone https://gitee.com/fkliuyanhong/googletest.git

编译gtest

cd googletest
mkdir build
cd build

cmake ..
make
sudo make install

两个问题解决后cmake成功了,cmake成功截图如下:
在这里插入图片描述

2.3、继续编译

继续向下编译,依次执行下面命令:

make -j3
make test
make install 

在最后执行make install出错

异常3、missing Abseil version
CMake Error at cmake_install.cmake:46 (message):
  Cannot generate CeresConfig.cmake due to missing Abseil version.  Using
  resulting package configuration will likely result in integration errors.
  Set absl_VERSION manually to disable this error message.

在这里插入图片描述

解决方案:

这个错误是通过deepseek告诉我的解决方案
刚刚在下载absl库的时候使用的是git下载的,所以在后面直接用git log查看版本,我查到的是如下:
在这里插入图片描述
所以自定义版本为:20250321
然后带着版本号重新编译一遍即可,依次执行下面命令

cd build   (保证还是在build目录下就行了)

cmake -Dabsl_VERSION=20250321 ..
make
sudo make install 

ceres库成功编译完成
在这里插入图片描述

至此 辉 2025.3.22

相关文章:

  • C/C++蓝桥杯算法真题打卡(Day5)
  • 从边缘到核心:群联云防护如何重新定义安全加速边界?
  • 区块链驱动金融第三章——深入解析比特币的运行机制
  • Spring IOC深入解析:从原理到实践
  • OpenAI流式解析
  • 【C++】入门
  • JavaWeek3-泛型,树和集合List接口
  • Spring Boot分布式项目异常处理实战:从崩溃边缘到优雅恢复
  • AF3 identity_rot_mats函数解读
  • CMS网站模板设计与用户定制化实战评测
  • Excel第41套全国人口普查
  • 【免费】2000-2019年各省地方财政房产税数据
  • c++第二课(基础)
  • Redis集群搭建和高可用方案(Java实现)
  • Docker与Ollama强强联合!deepseek-r1部署实践
  • FreeRTOS从入门到实战精通指南(一)
  • mne溯源后的数据初步处理方法
  • ubuntu系统/run目录不能执行脚本问题解决
  • 从单任务到多任务:进程与线程如何实现并发?
  • python 标准库之 functools 模块
  • 美国第一季度经济环比萎缩0.3%,特朗普:怪拜登,与关税无关
  • 为治理商家“卷款跑路”“退卡难”,预付式消费司法解释5月起实施
  • 俄伏尔加格勒机场正式更名为斯大林格勒机场
  • 国泰海通合并后首份业绩报告出炉:一季度净利润增逾391%
  • 顺利撤离空间站,神十九乘组踏上回家之旅
  • 郭继孚被撤销全国政协委员资格,此前为北京交通发展研究院长