はじめに
インストール先の話など細かいところは割愛しているので,わからない場合はこちらの記事を先に読んでください.
方法①
aptでインストール.
$ sudo apt install libeigen3-dev
/usr/include/eigen3/にインストールされます.
方法②
公式のダウンロードページからダウンロードして自分で配置する.
- 公式のダウンロードページ:Eigen
適当なディレクトリで解凍すると,
eigen-eigen-323c052e1731
のような長い文字付きのディレクトリ以下にいろいろ入っているのが確認できると思います.(文字の部分は環境や日時で変わります.)
本体はeigen-eigen-323c052e1731/Eigen/
以下なので,これを/usr/local/include/
以下にコピーしてあげればいいです.
$ sudo cp -r eigen-eigen-323c052e1731/Eigen/ /usr/local/include/eigen3
※Eigenはヘッダファイルをインクルードするだけで使えるようになっているのでビルドする必要はないようです.
[追記] 使用法
Eigenのような標準ではない外部ライブラリを使用する際は,プログラムに
#include<...>
と書いたうえで,コンパイル時に
$ g++ main.cpp -I ライブラリのパス
とするのが基本です.
<>でincludeしたものを探すパスリストはg++の-vオプションで確認できますが,僕の環境で確認したところ/usr/local/includeが入っていたため(どの環境でも入っているかもしれません.不明です.)コンパイル時には特にインクルードパスを指定しなくてもコンパイルできました.
#include <iostream>
#include <eigen3/Dense>
using Eigen::MatrixXd;
int main()
{
MatrixXd m(2,2);
m(0,0) = 3;
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
std::cout << m << std::endl;
}
$ g++ main.cpp
コードは『C++行列計算ライブラリEigen入門 』から拝借させていただきました.
上記記事ではincludeの部分が#include<Eigen/Dense>
となっています.他の記事でもこのように記述されていることがほとんどですが,
僕の環境で$ ls /usr/local/include/eigen3
の結果は以下のようになっているため,これで問題なく動きました.もしかするとmacとwindowsの違いが何かあるのかもしれませんが定かではありません.
詳しい人いたら教えてください.
CMakeLists.txt Eigenvalues MetisSupport SPQRSupport SparseQR src
Cholesky Geometry OrderingMethods SVD StdDeque
CholmodSupport Householder PaStiXSupport Sparse StdList
Core IterativeLinearSolvers PardisoSupport SparseCholesky StdVector
Dense Jacobi QR SparseCore SuperLUSupport
Eigen LU QtAlignedMalloc SparseLU UmfPackSupport