Ubuntu 21.10下使用Buildroot编译RISC-V Linux出现host-m4构建错误
问题根因
- 这个报错是Ubuntu 21.10自带的glibc版本升级导致的:glibc从2.34版本开始,将
SIGSTKSZ从固定的编译期常量修改为动态返回值的宏(内部调用sysconf(_SC_SIGSTKSZ)实现),无法再用于预处理阶段的条件判断、也不能作为静态数组的长度常量使用。 - 你当前使用的Buildroot版本内置的host-m4版本是1.4.18,这个版本的代码未适配glibc 2.34+的改动,直接把
SIGSTKSZ当编译期常量使用,因此触发报错。
解决方案
你可以根据你的实际情况选择以下任意一种方案解决:
- 方案一:升级Buildroot到2022.02及以上版本,这些版本已经将host-m4升级到1.4.19,官方已经修复了该兼容问题,无需额外修改配置即可正常编译。
- 方案二:如果你暂时无法升级Buildroot版本,可以手动给host-m4打兼容补丁:将m4官方针对该问题的修复补丁放到Buildroot的
package/m4/目录下,补丁命名符合00xx-xxx.patch的规则即可,Buildroot编译时会自动应用补丁。 - 方案三:临时绕开问题,编译前执行如下命令强制指定
SIGSTKSZ为常量值:
再执行正常的Buildroot编译命令即可,该配置仅对当前shell会话生效。export HOST_CFLAGS="$HOST_CFLAGS -DSIGSTKSZ=16384"
内容的提问来源于stack exchange,提问作者turbo
相关产品推荐
相关产品推荐

