最近在ROS1和ROS2中来回切换,头大T_T。问题是我需要ROS1和ROS2两个版本同时开发,因此我自己的系统上装了ubuntu22.04,需要同时兼容ROS1和ROS2, 因此g++是v11版本,但客户工控机只有ubuntu20.04,每次都要升级一次g++, 崩溃……
1, 升级glibc
在/etc/apt/sources.list文件末尾增加标准源:
deb http://th.archive.ubuntu.com/ubuntu jammy main
也可以写镜像源,但会出各种问题pthread库问题,因此我很少用
deb http://mirrors.aliyun.com/ubuntu/ jammy main
更新:
sudo apt update
sudo apt install libc6
ldd --version
2, 更新gcc-9, g++-9到11版本:
sudo apt remove gcc-9 g++-9
一句指令就可以了,会自动安装gcc-11和g++-11的
3, 别忘记链接pthread库:

完美~
PS:后来又遇到了问题,装opencv时源是focal-->升级c++时加了jammy源-->安装ffmpeg-->opencv和ffmpeg版本不匹配,于是报错:
[ WARN:0@91.912] global cap_ffmpeg_impl.hpp:453 _opencv_ffmpeg_interrupt_callback Stream timeout triggered after 30044.304831 ms
[ WARN:0@91.912] global cap.cpp:215 open VIDEOIO(FFMPEG): backend is generally available but can't be used to capture by name

解决办法:
sudo apt update
sudo apt upgrade python3-opencv
然后……发现就这一句命令把ubuntu直接给升级成22.04了,慌的一批T_T
4,顺便把重装20.04再写一遍吧
1)添加source.list:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2) 添加key:
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3) 安装
sudo apt update
sudo apt install ros-noetic-desktop-full
如果太慢可以换源:
sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
4)初始化和更新:
sudo apt install python3-rosdep2
sudo rosdep init
rosdep update
如果报错:ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down. 则需要映射域名和IP:
修改hosts:
sudo vi /etc/hosts
在最后一行添加:
185.199.110.133 raw.githubusercontent.com
5)环境配置:
source /opt/ros/noetic/setup.bash
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
6)安装常用包:
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
1240

被折叠的 条评论
为什么被折叠?



