使用 Eigen 的 g++
、clang
或 gcc
编译项目时,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 的头文件 |
Comments NOTHING