ROS melodic 使用C++17新特性
最近编译一个代码,需要使用C++17新特性filesystem,但是需要gcc8以上的版本才支持,所以额外安装了gcc-9.1.0
装完之后发现,系统版本的gcc变成了9.1.0,而ros编译怎么都还是7.5.0
然后强行改/usr/bin/gcc和g++链接,让ros编译变成了9.1.0
成功编译后又发现,之前编译的gtsam等库用的是7.5.0,所以又把这些库全部重新编译了一遍
当以为一切都能成功之后,结果之前好好的代码现在一跑就崩,一番操作全部白给
然后又把环境全部还原了。。。。
后续准备尝试一下把ros卸载了重新在gcc-9下安装,不知道这样行不行……
----------------------------分割线----------------------------------------------------
无意中发现一个编译选项,百度半天都搜不到的
catkin_make -DCMAKE_C_COMPILER=gcc-9 -DCMAKE_CXX_COMPILER=gcc-9
----------------------------分割线---------------------------------------------------
目前解决这个问题了,因为想尝试removert这个工程,所以编译得用到C++17 gcc得8以上的版本
我的环境是Ubuntu18.04 ros melodic
系统默认的gcc是7.5
首先安装 gcc-8 和g++8
sudo apt-get install gcc-8 g++8
然后编译的时候用下面的指令就行:
catkin_make -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8