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.