可変ブログ

色々メモとか。とりあえず自分が分かるように。その後、なるべく人が見て分かるように。可変。

CeresSolverをUbuntu16.04にインストールする。

Google製の数値最適化ライブラリCeresSolverをUbuntuにインストールする。


環境

  • Ubuntu16.04



流れ

ほとんど公式に書いてある通りです。簡単です。

  • 依存関係のインストール
  • ソースのダウンロード、展開
  • ビルド、インストール
  • 実行

依存関係のインストール

パッケージを最新にして、
CMake、google-glog + gflags、BLAS & LAPACK、Eigen3、SuiteSparse and CXSparseをインストール。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev



ソースのダウンロード、展開

ここからソースをダウンロード。下記コマンドで展開。

tar zxf ceres-solver-1.12.0.tar.gz



ビルド、インストール

ビルド用のディレクトリを作ってCMakeでMakefileを作りビルド。

mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-1.12.0
make
make test

make testが正常に通ればビルド完了。

sudo make install

でインストール。


実行

適当にサンプルをコンパイルしてみます。

【参考URL】

参考URLからサンプルコードをお借りして、main.cppという名前で保存します。
以下のコマンドでコンパイル

g++ main.cpp  `pkg-config --cflags eigen3` `pkg-config --libs libglog` -lgflags -lceres -lpthread -fopenmp -lcholmod -lblas -llapack -lcxsparse

コンパイルのリンカーオプションが多く、pkg-configが使えるものと使えないものがあって少しハマりました。
自分の環境だとgflagsだったかのパスが通ってないなどでコンパイルが通リませんでした。
その場合は下記のようにして、LD_LIBRARY_PATH にgflagsのライブラリのパスを追加して下さい。
環境変数 LD_LIBRARY_PATH に /usr/lib/x86_64-linux-gnu を追加するため.bashrcに下記を追加。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu

.bashrcを読み直し。

source ~/.bashrc