美文网首页
Ubuntu:常用的需要进行多版本管理的库:eigen3/pro

Ubuntu:常用的需要进行多版本管理的库:eigen3/pro

作者: 循梦渡 | 来源:发表于2021-02-26 13:40 被阅读0次


一 eigen3的双版本管理

首先,通过

sudo apt-get install libeigen

来安装的eigen3,默认安装在/usr/include下,查看此处的版本可用:

gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h

而通过源码安装,即在官方源码地址:http://eigen.tuxfamily.org/index.php?title=Main_Page

下载,然后解压,cd进解压后的文件夹,执行:

mkdir build

cd build

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/include/eigen3 ..

make

sudo make install

将会安装在/usr/local/inculde下 ,当然,也可以通过指定DCMAKE_INSTALL_PREFIX=/usr/include/eigen3 来安装在/usr/include目录下

如何进行双版本管理呢,以在/usr/include下进行版本为例(这样更加方便,不需要在cmakelist里指定eigen3的搜索路径)

首先,查看当前/usr/include/eigen3中的eigen3版本,发现:

#ifndef EIGEN_MACROS_H

#define EIGEN_MACROS_H

#define EIGEN_WORLD_VERSION 3

#define EIGEN_MAJOR_VERSION 3

#define EIGEN_MINOR_VERSION 7

也即,其版本为337

所以在/usr/include目录下:

sudo mkdir eigen337

然后,选择准备安装的第二个版本,例如eigen316,在同一目录下:

sudo mkdir eigen316

下载eigen316源码压缩包,压缩,然后在编译时制定安装位置为:

cmake -DCMAKE_INSTALL_PREFIX=/usr/include/eigen316/eigen3

其他不变

这样,当我们想使用eigen316版本时:

移入
sudo mv eigen3 eigen337    

移出

sudo mv eigen316/eigen3 .

也就是,把当前eigen3中的内容移到eigen337中保存,然后把eigen316中的内容移出至/usr/include

特别的,在进行这样的操作之后,有时会出现在cmakelist中include 然后编译时依然报错版本不对

这是因为,cmake会第一时间先去以下文件夹:/usr/lib/cmake,找eigen库对应的:EigenConfig.cmake,而这里面的版本没有被修改

解决方式也简单,直接把/usr/lib/cmake下的eigen文件夹删除即可(cmake依然可以找到eigen库)

二 protoc

首先用:

protoc --version

可以查看当前电脑上的protoc版本,例如查得当前版本为protobuf3.6.0

为了与后面的proto另一版本区别,建立软链接:

sudo ln /usr/local/bin/protoc /usr/local/bin/protoc3.6

sudo rm -rf pprotoc  # 删除protoc的软链接

protoc3.6  --version  # 通过新创建的软链接查看protoc版本

以后,就用protoc3.6 --version来查看protoc版本

现在安装第二版protoc:
下载地址:Protocol Buffers v3.6.0。例如选择的是protobuf2.6;

解压缩protobuf-all-2.6.0.tar.gz并移动到合适的文件夹,然后:

tar -zxvf protobuf-all-2.6.0.tar.gz

sudo cp -rf protobuf-2.6.0 /usr/local

cd /usr/local

sudo chmod -R 0777 protobuf-3.6.0

然后安装:

cd protobuf-2.6.0

./autogen.sh

./configure  --prefix=/usr/protobuf  # 为了与protobuf-3.6.0分开来,设定配置目录

make

make check

sudo make install

然后创建软连接:

sudo ln -s /usr/protobuf/bin/protoc /usr/local/bin/protoc2.6

现在即可用protoc2.6 --version来查看protoc第二个版本

如何使用呢,我们现在来到/usr/local/bin目录

发现里面会有:protoc,protoc2.6,protoc3.6三个软连接。

如果现在准备使用2.6版本在目录下:

sudo rm protoc

sudo ln /usr/local/bin/protoc2.6 /usr/local/bin/protoc

这时,用protoc --version 显示的就是2.6版了,如果想用3.6版本也是同样操作

三 gcc

一个小问题,有时会有这样的报错:unsupported GNU version! gcc versions later than 6 are not supported!

实际上是CUDA9.1不支持高版本的gcc,而你本机上就是高版本的gcc

解决方法:

sudo update-alternatives --install/usr/bin/g++ g++ /usr/bin/g++-6 10

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 10

即可切换至gcc6  后面的10是优先级,也就是说如果想切换回gcc7:

sudo update-alternatives --install/usr/bin/g++ g++ /usr/bin/g++-7 11

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 11

最好将优先级增大一点,以此类推

设置后,用gcc --verison查看当前版本

相关文章

  • Ubuntu:常用的需要进行多版本管理的库:eigen3/pro

    一 eigen3的双版本管理 首先,通过 sudo apt-get install libeigen 来安装的ei...

  • Ubuntu常用软件安装流程整理

    每次安装ubuntu之后,需要查找安装常用软件,现在整理一下常用软件及其安装。我的ubuntu版本是ubuntu ...

  • Python常用库大全

    Python常用库大全,看看有没有你需要的。 环境管理 管理 Python 版本和环境的工具 p – 非常简单的交...

  • 安装mrpt库总结

    注意一些库不要装两次,万一有多个版本就麻烦了1.5.5版本gcc高于7 cmake高于3.3 安装eigen3库s...

  • git 常用指令

    如何使用git管理代码 git 常用命令速查 创建版本库 git clone (url) #克隆远程版本库 git...

  • win10+Ubuntu(16.04, 18.04) 双系统安

    ubuntu镜像 常用版本:https://www.ubuntu.com/download/alternative...

  • 「Flyway」数据库版本管理

    前言 什么是数据库版本管理,为什么要进行数据库版本管理? 传统的开发模式 团队的Developer可以使用git,...

  • Git比较全的使用命令

    Git命令 初始化版本库,并提交到远程服务器端 常用的Git命令 对象库操作相关命令 引用操作相关命令 版本库管理...

  • Git学习-新建版本库

    一. 版本库 版本库(repository),有名仓库,是git管理的文件目录。 新建一个版本库很简单,只需要创建...

  • 2018-01-28

    git学习笔记 根据廖雪峰老师教程学习整理的常用命令 git版本库创建 文件管理相关 远程库 分支管理 bug修复...

网友评论

      本文标题:Ubuntu:常用的需要进行多版本管理的库:eigen3/pro

      本文链接:https://www.haomeiwen.com/subject/qujmfltx.html