linux-kernel - 使用 Ubuntu 21.10 构建时的 Buildroot 错误
问题描述
我正在尝试使用 buildroot(busybox) 为 RISCV Arch 编译 linux。我之前使用的是 18.04 和 20.04,编译时没有问题。现在,我已经将它升级到 21.10 来构建一些其他的东西。我已经移动了我的工具链,我可以使用which命令找到它。当我尝试编译 linux 时,我遇到了一些我在早期版本中没有遇到的错误。
>>> host-m4 1.4.18 Building
In file included from /usr/include/signal.h:328,
from ./signal.h:52,
from c-stack.c:49:
c-stack.c:55:26: error: missing binary operator before token "("
55 | #elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
| ^~~~~~~~
CC closein.o
c-stack.c:134:8: error: variably modified 'buffer' at file scope
134 | char buffer[SIGSTKSZ];
| ^~~~~~
CC closeout.o
我对不同版本如何导致此错误感到困惑。
提前致谢。
解决方案
看起来您已经在 GNU C 库 2.34 版中进行了更改,该更改可以使SIGSTKSZ
非常量。
- 添加
_SC_MINSIGSTKSZ
和_SC_SIGSTKSZ
。何时定义_DYNAMIC_STACK_SIZE_SOURCE
或在 Linux上不再是常量。 被重新定义为并被重新定义为。这支持适用于 Arm SVE 等现代架构功能的动态大小的寄存器集。_GNU_SOURCE
MINSIGSTKSZ
SIGSTKSZ
MINSIGSTKSZ
sysconf(_SC_MINSIGSTKSZ)
SIGSTKSZ
sysconf (_SC_SIGSTKSZ)
一种可能的解决方法是将 buildroot 配置为构建 host-m4 版本 1.4.19 而不是 1.4.18,因为它不再使用SIGSTKSZ
.
推荐阅读
- javascript - TypeScript - 计算属性名称必须是“字符串”、“数字”、“符号”或“任意”类型
- python - 在递归步骤中有和没有返回的递归函数
- r - 同一图中的许多图
- c++ - 将输入的值存储在 cpp 的数组中
- c# - 网格下拉框中的列表不返回值
- jsp - 如何配置 web.xml 以将 Tomcat 默认登录页面更改为 JSP
- windows - cygnetcdf-13.dll 的问题需要在 Cygwin 中使用新版本的 CDO
- python - Python Flask / Sqlite:如何在帖子内容中嵌入图像
- latex - 如何在 LaTeX 包 qrcode 中使用特殊字符 (ä,ü..)
- javascript - 为什么 map.has() 为已删除的对象返回 false?