LoginSignup
3
5

More than 3 years have passed since last update.

Eigenのインストール方法(WSL)

Last updated at Posted at 2019-10-18

はじめに

インストール先の話など細かいところは割愛しているので,わからない場合はこちらの記事を先に読んでください.

方法①

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が入っていたため(どの環境でも入っているかもしれません.不明です.)コンパイル時には特にインクルードパスを指定しなくてもコンパイルできました.

main.cpp
#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 
3
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5