【问题标题】:How to increase the gcc executable stack size?如何增加 gcc 可执行堆栈大小?
【发布时间】:2010-11-12 12:13:21
【问题描述】:

我有一个大型 Boost/Spirit 元程序,当我尝试编译它时,它正在破坏 gcc 的堆栈。

如何增加 gcc 的堆栈大小,以便编译这个程序?

注意:没有无限递归正在进行,但有足够的偶然递归耗尽 gcc 的堆栈。

【问题讨论】:

  • 我很好奇 - 你在做什么?让您的元程序在编译器上破坏堆栈是一项壮举。
  • 我正在开发一个 DSL,用于在分布式规则引擎中进行实时事件分析。

标签: c++ gcc boost-spirit


【解决方案1】:

在 Linux 上,您可以在 /etc/security/limits.conf 中扩展堆栈大小。

您可以使用

检查当前堆栈大小
$ ulimit -s
8192

然后将堆栈扩展为两倍:

youruser    soft    stack    16384

然后重新登录。

这将增加您正在运行的所有可执行文件的堆栈大小,而不仅仅是 GCC。

【讨论】:

  • 如果是软限制,可以通过输入ulimit -s 增加,无需重新登录。当然,这只适用于当前的 shell。
  • 我刚刚使用了一些非常大的值:sourav soft stack 2000000。然后我无法在 Linux 上启动像 chromium 和 falkon 和边缘浏览器这样的应用程序!当我启动它们时,它们都在向我的 SSD 写入 10 GB...
【解决方案2】:

我在我的编译器脚本中使用它:

CFLAGS += -Wl,--stack,10485760

【讨论】:

    【解决方案3】:

    可以在链接期间配置堆栈大小。您应该查看有关链接器脚本的详细信息。这只会改变你的单个程序的堆栈大小。

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 2015-11-22
      • 2013-12-24
      • 2011-09-29
      • 2010-11-24
      • 2017-10-15
      • 2018-01-17
      相关资源
      最近更新 更多