You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2 Ubuntu20.04源码编译ROS2 Humble时C++编译报错求助

解决WSL2 Ubuntu 20.04下ROS2 Humble源码编译及依赖问题

一、修复-lstdc++缺失错误

移除clang/llvm后出现链接器找不到libstdc++,是因为系统默认的gcc标准库套件未安装完整,执行以下步骤:

  • 安装完整的GCC编译套件:
    sudo apt update && sudo apt install build-essential gcc g++
    
  • 验证libstdc++库是否存在:
    find /usr -name libstdc++.so*
    
    若输出包含/usr/lib/x86_64-linux-gnu/libstdc++.so.6等路径,说明库已存在,链接器会自动识别;若为空,重新执行上述安装命令确保依赖完整。

二、重置系统默认编译器(解决clang/libc++损坏问题)

之前的libc++包损坏导致编译失败,移除后需将系统默认编译器切换回GCC:

  • 配置默认C编译器:
    sudo update-alternatives --config cc
    
    在弹出的选项中选择对应GCC的编号(通常是/usr/bin/gcc)。
  • 配置默认C++编译器:
    sudo update-alternatives --config c++
    
    选择对应G++的编号(通常是/usr/bin/g++)。
  • 彻底清理clang/libc++残留:
    sudo apt autoremove --purge clang llvm libc++*
    sudo apt autoclean
    

三、ROS2 Humble源码编译(适配Ubuntu 20.04 Tier3支持)

由于Ubuntu20.04是ROS2 Humble的Tier3支持版本,需严格遵循源码编译流程:

  1. 创建并进入工作空间:
    mkdir -p ~/ros2_humble/src
    cd ~/ros2_humble
    
  2. 拉取ROS2源码清单并同步源码:
    wget https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos
    vcs import src < ros2.repos
    
  3. 安装编译依赖(跳过部分Tier3不支持的包):
    rosdep install --from-paths src --ignore-src -y --skip-keys "fastcdr rti-connext-dds-6.0.1 urdfdom_headers"
    
  4. 强制使用GCC编译:
    colcon build --cmake-args -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ --symlink-install
    
    此命令会强制指定GCC工具链,避免再次调用损坏的Clang环境。

四、未完成安装的环境清理

若之前尝试过其他ROS2安装方式但未完成,按以下步骤清理残留:

  • 移除pip安装的ROS相关工具:
    pip3 uninstall -y rosdep rosinstall colcon-common-extensions
    
  • 删除源码工作空间的编译产物:
    rm -rf ~/ros2_humble/build ~/ros2_humble/install ~/ros2_humble/log
    
  • 清理系统中可能残留的ROS deb包(若存在):
    sudo apt autoremove --purge ros-*
    
    注:你提到系统中无/opt/ros目录及.bashrc相关配置,说明deb包未成功安装,此步骤可选择性执行。

内容的提问来源于stack exchange,提问作者Twenkid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:35:34