对eigen版本冲突的解决----多版本管理

1、进入eigen的build编译空间

sudo make uninstall
cd  ..
sudo rm -rf build

2、删除eigen3相关文件夹

sudo updatedb
locate eigen3

这时出来一堆eigen组件位置,在 /usr 下的 local var include 等文件夹下都有分布。可以试一下下面的命令:

sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/share/doc/libeigen3-dev
sudo rm -rf /usr/local/share/pkgconfig/eigen3.pc /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums

    然后再看一下位置,如果还有没删干净的,继续用 rm 命令删除就行:

3、卸载安装的eigen3-dev

sudo apt  purge libeigen3-dev

4、重新安装eigen

sudo apt-get install libeigen3-dev

eigen3 被默认安装到了usr/local/include里了。在很多程序中include时经常使用#include <Eigen/Dense>而不是使用#include <eigen3/Eigen/Dense>所以要做下处理,否则一些程序在编译时会因找不到Eigen/Dense而报错。
需要将usr/local/include/eigen3文件夹中的Eigen文件递归地复制到上一层文件夹。直接放到/usr/local/include中,否则系统无法默认搜索到

sudo cp -r /usr/include/eigen3/Eigen /usr/include 

5、补全刚刚卸载丢失的依赖
一条命令补全 sudo apt install ros-melodic-desktop-full -y

sudo apt install ros-melodic-camke-modules
sudo apt install ros-melodic-nav-msgs
sudo apt install ros-melodic-pcl-*
sudo apt install ros-melodic-visualization-msgs
sudo apt install ros-melodic-laser-geometry
sudo apt install ros-melodic-image-transport
sudo apt install ros-melodic-rviz
sudo apt-get install ros-melodic-rosbash
sudo apt-get install ros-melodic-rqt
sudo apt-get install ros-melodic-rqt-graph
sudo apt-get install ros-melodic-rqt-common-plugins
sudo apt install ros-melodic-pcl-conversions 
sudo apt install ros-melodic-pcl-ros
sudo apt install ros-melodic-laser-geometry

遇到
Failed to find Eigen - Could not find eigen3 include directory
/usr/local/include/eigen3
原因:默认安装位置是、/usr/include

sudo cp -r /usr/include/eigen3 /usr/local/include 
sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include 

多版本管理
查看eigen使用版本

pkg-config --modversion eigen3

通过 apt 安装(sudo apt install libeigen3-dev)的默认安装目录:/usr/include/eigen3
同时会生成 .pc 文件:/usr/share/pkgconfig/eigen3.pc

手动安装默认安装目录:/usr/local/include/eigen3
同时会生成 .pc 文件:/usr/local/share/pkgconfig/eigen3.pc

通过 apt 安装和手动安装都会生成 eigen3.pc 文件,当 pkg-config 找到一个 eigen3.pc 文件后,就不会继续查找了

pkg-config --variable pc_path pkg-config

eigen安装完成后在 /usr/loca/或者/usr中生成对应目录文件
在这里插入图片描述
其中share文件内有这两个文件
在这里插入图片描述
进入include文件夹,执行以下命令

 sudo mv eigen3 /usr/include/eigen340

后面的eigen340这个文件名是eigen版本,这样/usr/include目录下就存在两个版本的eigen,一个是以eigen3命名的通过apt-get的方式安装的最新版本,另外一个是以eigen340命名通过编译源码的形式安装的自选指定版本。

系统通过eigen3.pc这个文件搜索eigen库的,两种方式安装都会生成一个eigen3.pc文件,通过apt-get安装的存放在**/usr/share/pkgconfig文件夹下,通过源码安装的就存放在安装目录的/usr/local/share/pkgconfig**文件夹下,除了版本和安装位置不同外其它都一样,保留apt-get 安装生成的eigen3.pc文件,删除手动安装生成的。
在这里插入图片描述在这里插入图片描述
确定需要使用的版本,修改Version版本号,另一个版本用//注释掉即可.例如使用手动安装的340版本
接下来回到/usr/include下,执行以下命令:

sudo mv eigen3 eigen339
sudo mv eigen340 eigen3

这样就通过重命名的方式改变系统查找文件时的指向,进而完成了版本切换的工作

参考链接:
https://blog.csdn.net/weixin_42265301/article/details/121984300
https://blog.csdn.net/qq_43526137/article/details/125742642

选择手动安装的版本
https://eigen.tuxfamily.org/index.php?title=Main_Page
进入解压后的3.4.0版本的Eigen库文件夹内,依次执行下列命令:

mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/include/eigen340 ..     //这条指令使得Eien3.3.4安装在/usr/include/eigen334文件夹下
make
sudo make install                                         //安装
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值