ubuntu20.04+nvidia 525.105.17+cuda10.2+cudnn8.0+tensorrt8.0+tensorflow+pytorch+Eigen+CeresSolver+g2o

NVIDIA相关软件
nvidia 440.100 + cuda 10.2 + cudnn 8.0
在这里插入图片描述在这里插入图片描述

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple

适合于: GTX 2080, GTX1650Ti等显卡
文件列表如下:

NVIDIA-Linux-x86_64-440.100.run
cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
cudnn-10.2-linux-x64-v8.0.2.39.tgz
TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz

cuda和nvidia版本匹配如下:
在这里插入图片描述

1 NVIDIA驱动安装

进入网站 进行选择驱动版本
https://www.nvidia.cn/geforce/drivers/

1.1 软件安装:

1:进入
 Ctrl +Alt+F1 进入命令行模式 18.04
 Ctrl +Alt+F3 进入命令行模式 20.04
安装图形界面

首先需要安装lightdm,主要是用来关闭启动图形界面用,主要管理登录界面,ubuntu20.04需要自行安装,然后选择lightdm即可

sudo apt-get install lightdm


 或者 sudo lightdm service stop
2: 添加
编辑文件 blacklist.conf
sudo vim /etc/modprobe.d/blacklist.conf 在文件最后部分插入以下内容
blacklist nouveau
options nouveau modeset=0
3:跟新
sudo update-initramfs -u
4:查看是否禁用, 无输出,则正常
lsmod | grep nouveau
5:安装
sudo ./NVIDIA-Linux-x86_64-418.56.run -no-x-check -no-opengl-files
-no-x-check:安装驱动时关闭 X 服务
-no-opengl-files:只安装驱动文件,不安装 OpenGL 文件
6:查看,安装
nvidia-smi 查看

20.04文本命令,进入后,使用sudo会出现***,输入密码后可用sudo

退出文本两外方法
单次退出sudo systemctl start graphical.target 20.04


要持续取消Ubuntu 20.04默认进入文本模式,您可以按照以下2个步骤操作:

步骤一:
    修改GRUB配置:
    打开GRUB配置文件:
		sudo nano /etc/default/grub
		修改GRUB命令行,找到 GRUB_CMDLINE_LINUX_DEFAULT 这一行,通常默认值是 quiet splash。将其修改为 quiet splash(去掉 text 参数):
		GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
		更新GRUB配置:
		sudo update-grub
		重启系统:
		sudo reboot

步骤二:
		修改系统启动目标:
	
		如果您的系统使用 systemd,您需要将默认目标从 multi-user.target 更改回 graphical.target:
		
		sudo systemctl set-default graphical.target
		
		重启系统以应用更改:
		
		sudo reboot

Method 2:
sudo add-apt-repository
ppa:graphics-drivers #添加源
sudo apt-get update
sudo apt-cache search nvidia #查找安装包
//会输出 info
sudo ubuntu-drivers devices sudo apt-get install nvidia-390
nvidia-settings nvidia-prime #安装驱动

2 CUDA安装

2.1 软件安装:

sudo dpkg -i cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
//上一步会输出 接下来的命令,:
sudo apt-key add /var/*
sudo dpkg -i cuda-repo-ubuntu1604-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb
//然后进行安装
sudo apt-get update
sudo apt-get install cuda

如果之前安装过,卸载不干净,
CUDA完全卸载的方法:
sudo apt-get --purge remove “cublas” “cuda*”
sudo apt-get --purge remove “nvidia
sudo apt-get purge nvidia*
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /usr/local/cuda*

2.2 环境安装:
添加CUDA路径,运行gedit ~/.bashrc

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-10.2/bin:$PATH

接下来运行source ~/.bashrc使设置生效。

2.3 检查CUDA版本

cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery

若输出最后一行为Result=PASS,则验证成功。

查看环境对不对

echo $LD_LIBRARY_PATH

sudo ldconfig

ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_train.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_train.so.8 不是符号连接
ldconfig: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8 不是符号连接



sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.0.5 /usr/local/cuda-10.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8

New 版本

https://blog.csdn.net/qitanhl/article/details/130727510

TensorRT-8.4.1.5. Linux.x86_64- gnu. cuda-11.6.cudnn8.4 .tar.gz

针对 .run数据

sudo sh ./cuda_11.6.0_510.39.01_linux.run

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run

若第1步提示Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing.,选择continue,
在下一步中去除driver项,之后选择install:

在这里插入图片描述

#安装好后需要配置下环境变量:
sudo vi ~/.bashrc
 
#在文件最后添加
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
 
 
#保存,并输入
source ~/.bashrc
#生效
 
#最后输出nvcc -V测试:

3 CUDNN安装

下载的是cudnn-*tgz的压缩包时,按下方指令进行安装:
首先解压缩下的cudnn压缩包文件
执行安装,其实就是拷贝头文件和库文件并给予权限

3.1 解压及copy

tar -xzvf cudnn-10.2-linux-x64-v8.0.2.39.tgz
# copy cudnn头文件
sudo cp cuda/include/* /usr/local/cuda/include/
# copy cudnn的库
sudo cp cuda/lib64/* /usr/local/cuda/lib64/
# add 可执行权限
sudo chmod +x /usr/local/cuda/include/cudnn.h
sudo chmod +x /usr/local/cuda/lib64/libcudnn*

3.2 验证安装是否成功

//旧版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
// 新版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

如果显示
#define CUDNN_MAJOR 7
#define CUDNN_MINOR 6
#define CUDNN_PATCHLEVEL 2
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)
则cudnn安装成功
cuda cudnn tensorrt 运行问题
Q:
loading shared libraries: libcudart.so.8.0: cannot open shared object file:  can not open shared object file: No such file or directory

A: 
原因分析:

主要是 /usr/local/lib/目录下找不到libcudart.so.8.0这个文件, 该文件可以在usr/local/cuda-8.0/lib64/目录下找到,因此我们通过下面的命令将libcudart.so.8.0这个文件复制一份过去,记得要加sudo权限,否则可能无法复制。
————————————————
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig

4 protobuf-3.7.0安装

tar zvxf ******.tar.gz
cd protobuf-******
 
./configure –prefix=/usr/local/
 
sudo make          #编译时间很长
sudo make check
sudo make install

5 python-3.6.1安装

1、下载python。网址https://www.python.org/
  tar xfz Python-3.6.1.tgz

cd Python-3.6.1/

./configure --prefix=/usr/bin/python3.6

sudo make

sudo make install

需要删除原有的Python链接文件:  
sduo rm -rf /usr/bin/python

9、建立指向Python3.6的链接:   
susdo ln -s /usr/bin/python3.6/bin/python3.6
/usr/bin/python

OK

6 Tensorflow版本匹配查看

https://tensorflow.google.cn/install/source#linux
在这里插入图片描述
目前tensorflow2.2官方标配cuda10.1,
官方在github给出方案,修改cuda软链接即可,非常简单。不影响pytorch1.5(cuda10.2)的继续使用。

重点是这二步:

完成软链接
cd /usr/local/cuda-10.2/targets/x86_64-linux/lib/
ln -s libcudart.so.10.2.89 libcudart.so.10.1

cd /usr/local/cuda-10.2/extras/CUPTI/lib64
ln -s libcupti.so.10.2.75 libcupti.so.10.1
# 检查添加路径:
vim /etc/profile
export CUDA_HOME=/usr/local/cuda-10.2
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${CUDA_HOME}/extras/CUPTI/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
source /etc/profile

# 检查GPU:
>python
>>>import tensorflow as tf
>>>tf.__version__
2.2.0
>>>tf.test.is_gpu_available()
True
>>>tf.config.list_physical_devices('GPU')
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:1', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:2', device_type='GPU'),
 PhysicalDevice(name='/physical_device:GPU:3', device_type='GPU')]

7 torch install是否可用cuda

torch安装
针对有善良的cuda10.0

pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
 sudo pip3.7 install torch==1.7.1+cu101 torchvision==0.8.2+cu101 -f https://download.pytorch.org/whl/torch_stable.html -i https://mirrors.aliyun.com/pypi/simple/

pip3 install torch==1.7.1 -i https://mirrors.aliyun.com/pypi/simple/

pip3 install torch==1.7.1 -i https://mirrors.aliyun.com/pypi/simple/

pip3.7 install opencv-python -i https://mirrors.aliyun.com/pypi/simple/

pip3.7 install torchvision==0.8.2 -i https://mirrors.aliyun.com/pypi/simple/

conda install pytorch1.5.0 torchvision0.6.0 cudatoolkit=10.2 -c
pytorch

测试pytorch和cuda加速是否安装成功:

python3
import torch
torch.cuda.is_available()
 #返回True代表cuda加速成功

新版本搭配

ubuntu 18.04

NVIDIA-SMI 525.105.17 Driver Version: 525.105.17 CUDA Version: 12.0 |

cuda 10.2

cudnn-10.2-linux-x64-v8.0.5.39.tgz

TensorRT-8.0.1.6.Linux.x86_64-gnu.cuda-10.2.cudnn8.2.tar.gz

8 TensorRT7.1.3.4是否可用

如cudnn版本
cudnn-10.2-linux-x64-v8.0.2.39.tgz

如tensorrt版本
TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz

注意:

TensorRT7.1.3.4 适配cudnn8.0
TensorRT-7.0.0.11 不适配cudnn8.0

下载链接:https://developer.nvidia.com/tensorrt

tar -xvzf TensorRT-7.1.3.4.Ubuntu-16.04.x86_64-gnu.cuda-10.2.cudnn8.0.tar.gz


cd data
python3 ./download_pgms.py
cd sample
pip install pillow
../bin/sample_mnist

export LD_LIBRARY_PATH=/home/cs/TensorRT-7.1.3.4/lib:$LD_LIBRARY_PATH


cd /TensorRT-7.1.3.4/python
python3.6 -m pip install tensorrt-7.1.3.4-cp36-none-linux_x86_64.whl

测试tensorRT C++ API

cd samples/sampleOnnxMNIST/
make -j8
cd …/…/bin
bin ./sample_onnx_mnist

测试tensorRT C++ API

cd samples
make
cd ../bin
./sample_mnist

// 如果出现
./bin/sample_mnist
./bin/sample_mnist: error while loading shared libraries: libnvinfer.so.7: cannot open shared object file: No such file or directory

// 解决办法
sudo cp ./targets/x86_64-linux-gnu/lib/lib*.so.7 /usr/lib/


在这里插入图片描述

将TensorRT中的链接文件.so文件复制到/usr/lib/文件夹中,比如

1) ImportError: libnvinfer.so.6: cannot open shared object file:
Nosuch file or directory

2)ImportError: libnvonnxparser.so.6: cannot open shared object file:No
such file or directory

解决办法:

1) sudo cp TensorRT-6.01/targets/x86_64-linux-gnu/lib/libnvinfer.so.6
/usr/lib/

2)sudo cp
TensorRT-6.01/targets/x86_64-linux-gnu/lib/libnvonnxparser.so.6
/usr/lib/

出现pycuda问题
ModuleNotFoundError: No module named ‘pycuda’

sudo pip3.6 install pycuda== 2019.1.2 -i
https://pypi.tuna.tsinghua.edu.cn/simple
// 不用sudo
pip3.6 install pycuda -i https://pypi.tuna.tsinghua.edu.cn/simple
出现 is not a symbolic link
sbin/ldconfig.real: /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn_ops_
infer.so.8 is not a symbolic link
sudo ln -sf libcudnn.so.8.0.2 libcudnn.so.8

解决办法:
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8.0.4 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8

解决办法:
sudo ln -sf /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8.0.4 /usr/local/cuda-11.1/targets/x86_64-linux/lib/libcudnn.so.8

出现:

ERROR: ModelImporter.cpp:457 In function importModel: [4] Assertion
failed: !_importer_ctx.network()->hasImplicitBatchDimension() && “This
version of the ONNX parser only supports TensorRT INetworkDefinitions
with an explicit batch dimension. Please ensure the network was
created using the EXPLICIT_BATCH NetworkDefinitionCreationFlag.”
[03/01/2021-21:41:47] [E] [TRT] failed to parse onnx file

使用7,1的版本

//nvinfer1::INetworkDefinition* network = builder->createNetwork();
const auto explicitBatch = 1U <<
static_cast<uint32_t>(nvinfer1::NetworkDefinitionCreationFlag::kEXPLICIT_BATCH);
auto network = builder->createNetworkV2(explicitBatch);

9 python3自带虚拟环境是否可用

python3.6 -m venv .
source bin/activate

10 opencv-python安装

pip3.6 install opencv-python -i
https://pypi.tuna.tsinghua.edu.cn/simple 错误 ModuleNotFoundError: No
module named ‘skbuild’

1,安装cmake sudo apt install cmake

2,pip3 install scikit-build
三、OpenCV安装
OpenCV选择源码安装,版本最好3以上,因为OpenCV2到3之间差别很大,我是安装了4.2,先是安装依赖:

> sudo apt-get install build-essential sudo apt-get install cmake git
> libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
> sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev
> libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
> 然后安装包:
> 
> git clone https://github.com/opencv/opencv.git opencv-4.2.0 cd
> opencv-4.2.0 mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=Release
> -D CMAKE_INSTALL_PREFIX=/usr/local ..   make -j4 sudo make install

11 Visual Studio Code安装

method 1:

https://code.visualstudio.com/Download#

sudo dpkg -i code_1.41.1-1576681836_amd64.deb

method 2:

1.安装步骤

1.1.安装Ubuntu Make
使用命令

sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make sudo apt-get
update sudo apt-get install ubuntu-make
1.2.安装Visual Studio Code
使用命令 umake ide visual-studio-code

12 opencv报错

/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1:
undefined reference to `TIFFGetField@LIBTIFF_4.0’

则输入: ldd
/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_imgcodecs3.so.3.3.1 |
grep tiff 则输出: libtiff.so.5 => /usr/local/lib/libtiff.so.5
(0x00007fc7fca4c000)

解决方法: target_link_libraries(lidarNode /usr/local/lib/libtiff.so.5
${catkin_LIBRARIES} ${OpenCV_LIBRARIES} -ljsoncpp)

13 ros报错

The specified base path "/home/ubuntu/catkin_ws" contains a CMakeLists.txt but "catkin_make" must be invoked in the root of workspace
unlink /home/ubuntu/catkin_ws/CMakeLists.txt

14 eigen 安装

// 下载路径:
https://gitlab.com/libeigen/eigen/-/archive/3.3.7/eigen-3.3.7.tar.gz

install

sudo tar -xzvf eigen-3.3.7.tar.gz
mkdir build
cmake …/
sudo make install

如果报错

adar_object.cpp:82:26:   required from here
/usr/include/eigen3/Eigen/src/Core/AssignEvaluator.h:745:3: error: static assertion failed: YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY

可能是定义赋值数据类型不一致 Eigen::Vector3d local_loc Eigen::Vector3f local

eigen

/usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128:
Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions,
32>::plain_array() [with T = double; int Size = 4; int
MatrixOrArrayOptions = 0]: Assertion
`(reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array))
& (31)) == 0 && “this assertion is explained here: "
“http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html”
" **** READ THIS WEB PAGE !!! ****”’ failed.
https://blog.csdn.net/wojiushixiangshi/article/details/78356271

class AdaptiveKalmanFilter : public BaseFilter {
 public:
  EIGEN_MAKE_ALIGNED_OPERATOR_NEW

15:pcl

error:

CMakeFiles/multi_lidar_calibrator.dir/src/tof_calibrator.cpp.o:(.data.rel.ro._ZTVN3pcl25SampleConsensusModelPlaneINS_9PointXYZIEEE[_ZTVN3pcl25SampleConsensusModelPlaneINS_9PointXYZIEEE]+0x28): undefined reference to `pcl::SampleConsensusModelPlanepcl::PointXYZI::computeModelCoefficients(std::vector<int, std::allocator > const&, Eigen::Matrix<float, -1, 1, 0, -1, 1>&)’

right

cmake_minimum_required(VERSION 2.8.3)
project(calibrator)

add_compile_options(-std=c++11)


find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
image_transport
cv_bridge
message_generation
sensor_msgs
pcl_conversions
pcl_ros
message_filters
        )

find_package(PCL REQUIRED)
#set(PCL_INCLUDE_DIRS /usr/include/pcl-1.7) 
#set(PCL_INCLUDE_DIRS /usr/local/include/pcl-1.9)  #指定pcl1.8路径
 ##########################
       #   “#set ..."  is ok  配合下面
#include_directories(${PCL_INCLUDE_DIRS})
#link_directories(${PCL_LIBRARY_DIRS})
#add_definitions(${PCL_DEFINITIONS})

find_package (PCL REQUIRED)
set(PCL_INCLUDE_DIRS /usr/local/include/pcl-1.9)  
include_directories(${PCL_INCLUDE_DIRS} )
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

find_package(Boost REQUIRED COMPONENTS system)
#find_package(PCL REQUIRED QUIET)
find_package(OpenCV REQUIRED QUIET)

find_package( OpenCV 3.3.1 REQUIRED )
link_directories(/usr/local/lib)
include_directories(/usr/local/include/yaml-cpp)
include_directories(include  
${catkin_INCLUDE_DIRS}) 

catkin_package(
#  DEPENDS PCL
)

include_directories(
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
  ${PCL_INCLUDE_DIRS}
  /usr/local/include/
  /usr/local/ffmpeg/include
)

add_executable(calibrator 

  src/main.cpp
)
target_link_libraries(calibrator
/usr/lib/x86_64-linux-gnu/libtiff.so.5
   ##########################
       # ! ! !no link  is ok  配合上面
       # ${PCL_LIBRARIES}
        ${catkin_LIBRARIES}
        ${roslib_LIBRARIES}
        ${OpenCV_LIBS}
        yaml-cpp
)```

16:CeresSolver

git clone https://ceres-solver.googlesource.com/ceres-solver

Start by installing all the dependencies.

sudo apt-get install cmake
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libsuitesparse-dev

We are now ready to build, test, and install Ceres.

cd 
cmake ..
make -j3
make test
sudo make install
.....
.....
.....
-- Installing: /usr/local/lib/cmake/Ceres/CeresTargets.cmake
-- Installing: /usr/local/lib/cmake/Ceres/CeresTargets-release.cmake
-- Installing: /usr/local/lib/cmake/Ceres/CeresConfig.cmake
-- Installing: /usr/local/lib/cmake/Ceres/CeresConfigVersion.cmake
-- Installing: /usr/local/lib/cmake/Ceres/FindGlog.cmake
-- Installing: /usr/local/lib/libceres.a

Ceres报错

/usr/local/include/ceres/jet.h:998:8: error: ‘ScalarBinaryOpTraits’ is not a class template
 struct ScalarBinaryOpTraits<ceres::Jet<T, N>, T, BinaryOp> {
        ^
/usr/local/include/ceres/jet.h:1002:58: error: type/value mismatch at argument 3 in template parameter list fortemplate<class BinaryOp, class T, int N> struct Eigen::ScalarBinaryOpTraitsstruct ScalarBinaryOpTraits<T, ceres::Jet<T, N>, BinaryOp> {


Eigen冲突了,删除已安装版本,重新安装即可

$ sudo updatedb 
$ locate eigen3

然后看着删

$ sudo rm -rf /usr/local/include/eigen3/
$ sudo rm -rf /usr/include/eigen3

在自己下载好的Eigen源码文件中重新编译安装

$ cmake ..
$ sudo make install

16:g2o

https://github.com/RainerKuemmerle/g2o

git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o

mkdir build
cd build
cmake ../
make -j4
make install

# 需要 C++14
    

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值