ubuntu运行Eigen教程代码出现问题及解决方案

最近在看《视觉SLAM十四讲从理论到实践》这本书,第三章介绍了 三维空间刚体运动,其中用到了Eigen这个C++开源线性代数库,它提供与矩阵有关的线性代数相关运算,还包括解方程等功能。许多上层的软件库也使用Eigen来进行矩阵运算,包括g2o,Sophus。这里我运行了书中部分代码:

#include <iostream>
using namespace std;

#include <ctime>

#include <Eigen/Core>//核心部分
#include <Eigen/Dense>//稠密矩阵的代数运算(逆、特征值等)
using namespace Eigen;

#define MATRIX_SIZE 50

int main(int argc, char **argv)
{
	Matrix<float, 2, 3> matrix_23;
	
	Vector3d v_3d;

	Matrix<float, 3, 1> vd_3d;

	Matrix3d matrix_33 = Matrix3d::Zero();

	Matrix<double, Dynamic, Dynamic> matrix_dynamic;

	MatrixXd matrix_x;

	matrix_23 << 1, 2, 3, 4, 5, 6;
	cout << "matrix 2*3 from 1 to 6: \n" << matrix_23 << endl;

	cout << "print matrix 2*3: " << endl;
	for(int i=0; i<2; i++)
	{
		for(int j=0; j<3; j++) cout << matrix_23(i, j) << "\t";
		cout << endl;	
	}
	
	
}

其中定义了一些Eigen的基本类型,并输出一个矩阵,但是在运行过程中出现了以下问题:

jw@jw-virtual-machine:~/Code$ g++ eigenMatrix.cpp -o eigenMatrix
eigenMatrix.cpp:6:36: fatal error: Eigen/Core: 没有那个文件或目录
compilation terminated.

因为我include了Eigen核心库,但是显示没有那个文件或目录,于是上网搜索:

解决 fatal error: Eigen/Core: No such file or directory_不乏希望的博客-优快云博客

这位博主给出了解决方案:

首先检查是否安装了Eigen库:

jw@jw-virtual-machine:~$ sudo updatedb
[sudo] jw 的密码: 
jw@jw-virtual-machine:~$ locate eigen3
/usr/include/eigen3
/usr/include/eigen3/Eigen
/usr/include/eigen3/signature_of_eigen3_matrix_library
/usr/include/eigen3/unsupported
/usr/include/eigen3/Eigen/Cholesky
/usr/include/eigen3/Eigen/CholmodSupport
/usr/include/eigen3/Eigen/Core

这里的eigen3有太多,我只复制了一部分,可以看到,我是安装了eigen3库的。

然后检查CMakelist文件是否包含了eigen3库的头文件,也就是是否有以下代码:

include_directories("/usr/include/eigen3")

因为我只是创建了一个cpp文件,没有CMakelist文件,所以我在终端输入了以下命令并重新编译cpp文件:

jw@jw-virtual-machine:~/Code$ sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
[sudo] jw 的密码: 
jw@jw-virtual-machine:~/Code$ g++ eigenMatrix.cpp -o eigenMatrixjw@jw-virtual-machine:~/Code$ ./eigenMatrix 
matrix 2*3 from 1 to 6: 
1 2 3
4 5 6
print matrix 2*3: 
1	2	3	
4	5	6	

可以看到文件编译,执行成功。

所以解决没有那个文件或目录的方法有三:

  1. 检查是否缺少库
  2. 查看CMakelist文件是否包含头文件
  3. 没有CMakelist文件的话,在终端输入命令链接Eigen库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值