使用 Eigen 的 g++clanggcc 编译项目时,Windows 和 Linux 的命令会有所不同。下面分别列出这四种情况的基本编译命令。

手动编译安装

在Eigen官网中下载最新版安装包源码,或者可以直接使用wget命令进行下载。之后提取压缩包,进入提取出来的文件夹,在终端中打开,然后进行编译

mkdir build
cd build
cmake ..
cmake --build .

Windows

使用 g++

如果 Eigen 文件夹解压在 D:\windows-amd64\eigen-3.4.0,假设你的源文件是 main.cpp,编译命令为:

g++ -I"D:\windows-amd64\eigen-3.4.0" main.cpp -o main

使用 clang

首先确保你安装了 clang。在命令行中,你可以使用下面的命令:

clang++ -I"D:\windows-amd64\eigen-3.4.0" main.cpp -o main

使用 gcc

那么你可以使用以下的命令来编译(注意,如果你的文件是 C++ 文件,使用 gcc 若只支持 C 语言,则推荐使用 g++clang++):

gcc -I"D:\windows-amd64\eigen-3.4.0" main.cpp -o main -lstdc++ 

Linux

使用 g++

假设 Eigen 解压到了 /home/user/eigen-3.4.0,编译命令为:

g++ -I"/home/user/eigen-3.4.0" main.cpp -o main

使用 clang

同样可以用 clang 编译:

clang++ -I"/home/user/eigen-3.4.0" main.cpp -o main

使用 gcc

对于 C++ 文件,仍然建议使用 g++,但是如果你要使用 gcc,可以这样编译:

gcc -I"/home/user/eigen-3.4.0" main.cpp -o main -lstdc++

代码示例

无论你是使用 Windows 还是 Linux,确保你的 main.cpp 文件合理地引入了 Eigen,如下所示:

#include <Eigen/Dense>
#include <iostream>

int main() {
    Eigen::Matrix3d matrix;
    matrix = Eigen::Matrix3d::Identity();
    std::cout << "Matrix:\n" << matrix << std::endl;
    return 0;
}

模块与头文件

模块头文件内容
Core#include <Eigen/Core>矩阵和数组 (向量) 类 (Matrix, Array),基于线性代数还有数组操作
Geometry#include <Eigen/Geometry>变换,平移,缩放,2D 旋转和 3D 旋转 (包括四元数和角轴)
LU#include <Eigen/LU>使用求解器进行求逆,行列式,LU 分解操作
Cholesky#include <Eigen/Cholesky>使用求解器进行 LLT, LT, Cholesky 分解
Householder#include <Eigen/Householder>Householder 变换;被用作几个线性代数模块
SVD#include <Eigen/SVD>SVD 分解与最小二乘求解器
QR#include <Eigen/QR>QR 分解
Eigenvalues#include <EIgen/Eigenvalues>特征值特征向量分解
Sparse#include <Eigen/Sparse>稀疏矩阵存储以及相关的基本线性代数
Dense#include <Eigen/Dense>包括 Core, Geometry, LU, Cholesky, SVD, QR, Eigenvalues 的头文件
Eigen#include <Eigen/Eigen>包括 Dense 和 Sparse 的头文件