Guide d'installation de Ceres Solver sur Ubuntu 22.04 : Résolution des dépendances et erreurs courantes

L'installation de la bibliothèque d'optimisation non linéaire Ceres Solver sur Ubuntu 22.04 peut s'avérer complexe en raison de conflits de dépendances, notamment avec Abseil (absl), GTest ou TBB. Ce guide détaille comment identifier ces erreurs et propoce une méthode d'installation stable.

Identification des problèmes fréquents

Lors de la configuration d'un projet utilisant Ceres via CMake, l'erreur suivante est classique si la bibliothèque est absente ou mal référencée :

CMake Error at CMakeLists.txt:
  Could not find a package configuration file provided by "Ceres" with any of
  the following names:
    CeresConfig.cmake
    ceres-config.cmake

Une tentative d'installation manuelle depuis les sources (version master) peut déclencher une cascade d'erreurs liées à Abseil. Si CMake ne trouve pas abslConfig.cmake, il est nécessaire d'installer Abseil-CPP manuellement :

# Récupération et installation d'Abseil
git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
mkdir build_dir && cd build_dir
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl ..
make -j$(nproc)
sudo make install

Cependant, même après l'installation d'Abseil, des erreurs de liaison avec GTest/GMock ou des erreurs de compilation liées à testing::SrcDir() peuvent survenir dans les versions les plus récentes de Ceres Solver récupérées directement sur GitHub.

Solution recommandée : Utilisation d'une version stable (Ceres 2.1.0)

Pour éviter l'instabilité de la branche principale, il est préférable d'utiliser la version 2.1.0. Voici la procédure optimisée pour préparer l'environnement et compiler Ceres :

# Mise à jour des dépôts et installation des prérequis
sudo apt update
sudo apt install -y cmake libgoogle-glog-dev libgflags-dev \
    libeigen3-dev libsuitesparse-dev liblapack-dev libtbb-dev

Correction de l'erreur de fichier TBB manquant

Sur Ubuntu 22.04, il arrive que le fichier tbb_stddef.h soit manquant, provoquant l'échec de la lecture des en-têtes TBB. Vous pouvez résoudre ce problème en créant manuellement le fichier requis :

cd /usr/include/tbb
sudo touch tbb_stddef.h

Éditez ensuite ce fichier (sudo nano tbb_stddef.h) pour y injecter les macros de compatibilité nécessaires ou laissez-le vide si le compilateur a simplement besoin de vérifier son existance pour valider la structure du répertoire.

Compilation et installation finale

Une fois les dépendances corrigées, procédez à la compilation de Ceres 2.1.0 :

# Extraction de l'archive Ceres 2.1.0 préalablement téléchargée
cd ceres-solver-2.1.0
mkdir build_optimization && cd build_optimization

# Configuration et compilation
cmake .. \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_EXAMPLES=OFF \
  -DBUILD_TESTING=OFF

make -j$(nproc)
sudo make install

En désactivant les exemples et les tests (BUILD_EXAMPLES=OFF, BUILD_TESTING=OFF), vous contournez la majorité des erreurs liées à GTest et aux chemins de ficheirs internes, tout en obtenant une bibliothèque parfaitement fonctionnelle pour vos projets de vision par ordinateur ou de robotique.

Étiquettes: ubuntu22.04 ceres-solver CMake cpp optimization-library

Publié le 16 juin à 00h39