【问题标题】:Increase Stack Size on Windows (GCC)在 Windows (GCC) 上增加堆栈大小
【发布时间】:2010-09-14 11:10:09
【问题描述】:

有没有办法使用 GCC 在编译/链接时增加 Windows 应用程序的堆栈大小?

【问题讨论】:

  • 谁能解释一下增加堆栈大小是什么意思?堆栈帧是堆栈上的函数占用的部分。堆栈是由操作系统决定的吗? editbin 如何帮助它?我很困惑!

标签: windows gcc compiler-construction linker stack


【解决方案1】:

IIRC,在 GCC 中,您可以向 ld 提供 --stack,[bytes] 参数。

例如

gcc -Wl,--stack,16777216 -o file.exe file.c

要拥有 16MiB 的堆栈,我认为默认大小是 8MiB。

【讨论】:

  • 这是我最初寻找的。不幸的是,我在 Windows 上没有任何运气。你有吗?
  • +1 当我在 gcc 4.5.2 上尝试时,这确实有效。如果没有这个开关,编译后的程序会以大约 500k 的静态数组大小开始出现段错误。应用此开关后,我能够将大小一路增加到 300 万个元素。
  • 在 CMake 中,这看起来像 this,它适用于我。
【解决方案2】:

你可以在链接后运行editbin。

【讨论】:

  • 我绝对可以——这似乎是我不可避免地必须做的——但我正在寻找一种在链接时做到这一点的方法。不过还是谢谢。
【解决方案3】:

Windows 中有两种堆栈大小。最初提交的大小和总保留大小。您可以在 .def 文件中使用 STACKSIZE 语句设置两者。

【讨论】:

    【解决方案4】:

    创建线程时,您使用 dwStackSize 参数,但我不确定如何更改主线程的大小,这表明它在 exe 的头文件中,因此它可能是编译器/链接器的一个选项,否则你需要找到header的相关部分,自己修改。

    http://msdn.microsoft.com/en-us/library/ms686774(VS.85).aspx

    【讨论】:

      猜你喜欢
      • 2010-11-12
      • 2015-11-22
      • 2010-11-24
      • 2017-03-02
      • 1970-01-01
      • 2020-02-02
      • 2015-07-01
      • 2013-12-24
      • 2011-09-29
      相关资源
      最近更新 更多