slam_in_self_driving 配套代码编译环境配置

 作为阶段性学习记录,配置环境太累了,总会有各种意外的问题影响学习进度,之后要探索一个能兼容很多框架的环境,立个flag。总之踩过的坑不能再踩一遍,珍惜时间

1.兼容c++17,安装gcc-9 g++-9

          ⽤到c++17的新特性以及TBB库进⾏并发加速,因此需要适配gcc编译器,我安装的是9,也可以gcc-11&g++-11,没试过,不知会不会有意外错误,兼容c++各个标准的GCC编译器情况。先安装gcc-9 g++-9:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt-get install gcc-9
sudo apt-get install g++-9

       后两句可能会报错,如果同时存在好几个版本gcc,问题就来了,默认用哪个,所以得设置一下,

# 实现版本切换
sudo update-alternatives --remove-all gcc
sudo update-alternatives --remove-all g++

# 命令最后的10是优先级,如果使⽤auto选择模式,系统将默认使⽤优先级⾼的,
# 如果检查到有多个版本gcc,需要给要用的版本分配最高优先级数字 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10

# 切换版本
sudo update-alternatives --config gcc
sudo update-alternatives --config g++

# 检查版本
gcc -v
g++ -v

2. TBB(oneTBB)

 这里参考linux tbb 安装_Ubuntu18.04 GCC9 安装_天街踏尽公卿骨的博客-CSDN博客

下载tbb,并cd 到目录

wget https://github.com/intel/tbb/archive/2019_U8.tar.gz
tar zxvf 2019_U8.tar.gz
rm 2019_U8.tar.gz
cd tbb-2019_U8
  • 编辑linux.gcc-9.inc
cp build/linux.gcc.inc build/linux.gcc-9.inc 
# 使用vscode 编辑文件
code -n build/linux.gcc-9.inc
 
# 把大约是15,16 行的CPLUS ?= g++ CONLY ?= gcc修改为下面语句,然后保存
CPLUS ?= g++-9
CONLY ?= gcc-9
  • 编辑tbb
make compiler=gcc-9 stdver=c++17 tbb_build_prefix=my_tbb_build
  • 安装tbb
sudo mkdir /usr/local/tbb-2019_U8
sudo cp -r include /usr/local/tbb-2019_U8/include
sudo ln -s /usr/local/tbb-2019_U8/include/tbb /usr/local/include/tbb
sudo cp -r build/my_tbb_build_release /usr/local/tbb-2019_U8/lib
 
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbb.so.2 /usr/local/lib/libtbb.so
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbbmalloc.so.2 /usr/local/lib/libtbbmalloc.so
sudo ln -s /usr/local/tbb-2019_U8/lib/libtbbmalloc_proxy.so.2 /usr/local/lib/libtbbmalloc_proxy.so
echo 'export LD_LIBRARY_PATH=/usr/local/tbb-2019_U8/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc  # 严格按此敲,没问题

3. Pangolin安装

 使⽤Pangolin进⾏可视化,⽽不是ROS中的rviz,这里和orbslam2使用的0.5版本不同,所以0.5不兼容,这里是1.0版

git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
make -j
sudo make install
sudo ldconfig # 执⾏⼀下,不然有error while loading shared libraries: libpango_windowing.so

4. G2O 安装

 编译g2o时可以不⽤新建 build ,直接 cmake . ,再 make -j 也可以

git clone https://github.com/gaoxiang12/slam_in_autonomous_driving
# ⾸先编译g2o
cd slam_in_autonomous_driving/thirdparty/gªo/
mkdir build
cd build
cmake ..
make -j8

5. ROS安装

 本课程主要使⽤ROS来解析bag数据集,安装请参考ROS官⽹
鱼香ROS一键安装,很贴心 一键安装

 一行代码就够了

wget http://fishros.com/install -O fishros && . fishros

6. 其他一些库

挨个试一下,看看哪个没装上呢

sudo apt-get install ros-melodic-pcl-ros ros-melodic-velodyne-msgs libopencv-dev libgoogle-glogdev libeigen«-dev libsuitesparse-dev libpcl-dev libyaml-cpp-dev libgtest-dev

值得思考的是这里的glog 和 googletest?之后还要重装

7. 先安装Gflags,再安装glog、googletest(2-5步没有先后顺序)

gfags 安装参考了gflags&glog卸载与安装  这里要注意的是cmake .. 命令之后需要加的参数:-DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC ..   这会在之后程序链接 libglog.so.x.  的时候会避坑,至少我避免了这个再次报错

1. 如果要卸载:

# 1. glog
sudo apt-get remove sudo apt-get remove libgoogle-glog-dev
# 2. gflags
sudo apt-get remove libgflags-dev

2.安装gflags

 这里要注意cmake .. 之后的配置参数 没有这些会造成gflags或者glog动态库与静态库链接混乱

git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build
cmake .. -DGFLAGS_NAMESPACE=google -DCMAKE_CXX_FLAGS=-fPIC ..
make -j4
sudo make install

3. glog 安装参考了linux 下glog的安装

git clone https://github.com/google/glog         //or  git clone https://gitee.com/boxingcao/glog.git

sudo apt-get install autoconf automake libtool
cd glog
mkdir build
cd build
cmake ..
make -j8
sudo make install
sudo ldconfig

 4. googlegtest

源码安装最新的gtest,因为不安装最新的可能会在编译工程代码时报错,ubuntu 18.04正常 sudo apt-get install libgtest-dev 好像也会出现这个问题,猜测是版本太低的原因

git clone https://github.com/google/googletest
cd googlegtest
mkdir build
cd build
cmake ..
make -j
sudo make install

安装完先别急着按配置文档修改cmakelists.txt文件,先重新编译一下(删除build在新建编译)

有问题再改cmakelists.txt

原因在这2023.05.17更新有同学遇到了上述操作完成后。开始编译工程代码,进行cmake .. 操作后就出现报错的情况:

 

我当时遇到的就是这种,所以先不要加命名空间GTest:: 和 TBB:: ,先编译试试,具体原因为何不改就能过了?有知道的欢迎留言评论,一起学习进步哈

8. 最后编译框架

cd ~/ //进入代码框架文件夹
mkdir build
cd build 
cmake ..
make -j8
/*运行完后会在主文件夹内生成 bin/文件夹,即各个子程序可执行文件存放文件夹 */
cd ../
./bin/xxxx

这里尽量不要用make -j 除非对内存很自信,否则,哼哼,爆内存卡死,你只能强制关机重启,最好用make -jx(x <= 2 * 核数)小技巧,怎么查核数

总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看cpu型号
cat /proc/cpuinfo | grep 'model name' |uniq

查看核数,自己数 。 2023.05.17更新也可以用 make -j$(nproc)自动判断最大能用的线程

grep "model name" /proc/cpuinfo |awk -F ':' '{print $NF}'

参考:

[1] GCC版本对C++的支持 - 知乎

[2] linux tbb 安装_Ubuntu18.04 GCC9 安装_天街踏尽公卿骨的博客-CSDN博客

[3] ubuntu20.04一键安装VScode搭建ROS编程环境_鱼香ros一键安装_啥都学点的博客-CSDN博客

[4] melodic/Installation/Ubuntu - ROS Wiki

[5] 【ubuntu】——gflags&glog卸载与安装_卸载glog_农夫山泉2号的博客-CSDN博客

[6] make报错:relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5‘_RuiH.AI的博客-CSDN博客

[7] linux 下glog的安装_glog安装_红尘-有梦的博客-CSDN博客

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值