You need to enable JavaScript to run this app. 树莓派3B安装ROS2 Rolling时报'expected ',' or '}' before '__attribute__''错误
优惠活动
大模型
产品
解决方案
定价
更多

树莓派3B安装ROS2 Rolling时报'expected ',' or '}' before '__attribute__''错误

树莓派3B编译ROS2 Rolling RMW头文件错误修复方案

错误原因

该错误为ARM32(armv7/armhf)架构下GCC编译器的语法兼容性问题,树莓派3B默认搭载的32位系统GCC版本对结构体末尾成员的__attribute__标注解析存在缺陷,宏展开后触发语法校验错误。

修复方法

方法1:修改RMW头文件宏定义(直接生效,推荐)

找到本地ROS2源码路径下的rmw/include/rmw/types.h文件,将第418行附近的宏定义替换为以下兼容写法:

#ifndef _WIN32
#define RMW_DECLARE_DEPRECATED(name, msg) __attribute__((deprecated(msg))) name
#else
#define RMW_DECLARE_DEPRECATED(name, msg) name __pragma(deprecated(name))
#endif

调整__attribute__标注的位置到变量名前,即可避开GCC的解析缺陷。

方法2:调整编译参数(无需修改源码)

执行colcon编译时追加GNU标准指定参数,提升兼容性:

colcon build --cmake-args -DCMAKE_C_FLAGS="-std=gnu11" -DCMAKE_CXX_FLAGS="-std=gnu++17"

方法3:升级GCC版本

如果当前系统GCC版本低于10.x,可升级到GCC 10+版本规避该问题:

sudo apt update
sudo apt install -y gcc-10 g++-10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-10 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 11:36:01