我有大型 Boost/Spirit 元程序,当我尝试编译它时,它正在破坏 gcc 的堆栈。
如何增加 gcc 的堆栈大小,以便编译该程序?
注意:没有无限递归进行,但有足够的偶然递归耗尽 gcc 的堆栈。
我有大型 Boost/Spirit 元程序,当我尝试编译它时,它正在破坏 gcc 的堆栈。
如何增加 gcc 的堆栈大小,以便编译该程序?
注意:没有无限递归进行,但有足够的偶然递归耗尽 gcc 的堆栈。
在 Linux 上,您可以在 /etc/security/limits.conf 中扩展堆栈大小。
您可以使用检查当前堆栈大小
$ ulimit -s
8192
然后将堆栈扩展为两倍:
youruser soft stack 16384
然后重新登录。
这将增加您正在运行的所有可执行文件的堆栈大小,而不仅仅是 GCC。
我在我的编译器脚本中使用它:
CFLAGS += -Wl,--stack,10485760
可以在链接期间配置堆栈大小。您应该查看有关链接器脚本的详细信息。这只会改变您的单个程序的堆栈大小。