Linux(Ubuntu24.04)安装Eigen3库

本次安装Eigen3是在WSL2的Ubuntu24.04环境下进行。

Eigen3是一个C++模板库,用于线性代数、矩阵运算和数值计算。它提供了一组高性能的矩阵和向量操作,以及常用的线性代数算法,如矩阵分解、特征值求解和最小二乘解等。

1、安装Eigen3

有两种安装方式,一种是apt直接install,另一种是源码编译安装。

1.1 方式1

libeigen3-dev是Eigen库的开发包,包含了开发所需的头文件和库文件。

bash 复制代码
sudo apt-get update
sudo apt install libeigen3-dev

通常情况,安装位置在 /usr/local/include/eigen3或者/usr/include/eigen3中,ls查看eigen3下有两个文件夹Eigen、unsupported和一个signature_of_eigen3_matrix_library文件。

bash 复制代码
ls /usr/include/eigen3/
Eigen  signature_of_eigen3_matrix_library  unsupported

1.2 方式2

bash 复制代码
#在GitHub上克隆eigen3库文件
git clone https://github.com/OPM/eigen3.git
 
#编译安装
cd eigen3
mkdir build
cd build
cmake ..
sudo make install 

1.3 Eigen路径

因为eigen3 被默认安装到了usr/local/include里了(或者是usr/include里,这两个都差不多,都是系统默认的路径),在很多程序中include时经常使用**#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>**所以要做下处理,否则一些程序在编译时会因找不到Eigen/Dense而报错。此时只能在CMakeLists.txt用include_libraries(绝对路径)。解决方式如下:

(1)创建软连接**(推荐)**

bash 复制代码
sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen

(2)或者复制Eigen到上级目录

bash 复制代码
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 

1.4 查看Eigen3版本

bash 复制代码
#使用pkg-config工具查看
pkg-config --modversion eigen3
3.4.0

或者通过cat /usr/include/eigen3/Eigen/src/Core/util/Macros.h 或 cat /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h,查看Eigen版本号。 g++ --version | grep Eigen 命令也可以查看Eigen版本。

2、测试Eigen3

2.1 创建test.cpp

bash 复制代码
#建立 test 测试文件
touch test.cpp
#用 gedit 打开此测试文件
vim test.cp

2.2 代码

cpp 复制代码
#include <iostream>
#include <Eigen/Dense>
//using Eigen::MatrixXd;
using namespace Eigen;
using namespace Eigen::internal;
using namespace Eigen::Architecture;
 
using namespace std;
 
int main()
{
        cout<<"*******************1D-object****************"<<endl;
        Vector4d v1;
        v1<< 1,2,3,4;
        cout<<"v1=\n"<<v1<<endl;
 
        VectorXd v2(3);
        v2<<1,2,3;
        cout<<"v2=\n"<<v2<<endl;
 
        Array4i v3;
        v3<<1,2,3,4;
        cout<<"v3=\n"<<v3<<endl;
 
        ArrayXf v4(3);
        v4<<1,2,3;
        cout<<"v4=\n"<<v4<<endl;
}

2.3 编译运行

bash 复制代码
g++ test.cpp -o test
./test
*******************1D-object****************
v1=
1
2
3
4
v2=
1
2
3
v3=
1
2
3
4
v4=
1
2
3
相关推荐
楼田莉子1 小时前
仿Muduo的高并发服务器:Http协议模块
linux·服务器·c++·后端·学习
agicall.com8 小时前
座机通话双方语音分离技术解决方案详解
人工智能·语音识别·信创电话助手·座机语音转文字·固话座机录音转文字
AI机器学习算法8 小时前
《动手学深度学习PyTorch版》笔记
人工智能·学习·机器学习
milo.qu8 小时前
RockyLinux9.7 docker部署Jisti Meet
linux·docker·容器
GanGanGanGan_8 小时前
CentOS 7.9 glibc 2.17 源码编译升级到 glibc 2.31
linux·运维·centos·glibc
Goboy8 小时前
「我的第一次移动端 AI 办公」TRAE SOLO 三端联动, 通勤路上就把活干了,这设计,老罗看了都想当场退役
人工智能·ai编程·trae
qq_452396238 小时前
第二十篇:《UI自动化测试的未来:AI驱动的智能测试与低代码平台》
人工智能·低代码·ui
tjl521314_218 小时前
04C++ 名称空间(Namespace)
开发语言·c++
ximu_polaris8 小时前
设计模式(C++)-行为型模式-备忘录模式
c++·设计模式·备忘录模式
charlie1145141918 小时前
嵌入式Linux驱动开发——class 和 device 模型 - 自动创建设备节点的幕后机制
linux·运维·驱动开发