【问题标题】:Setting stack size in cmake with gcc使用 gcc 在 cmake 中设置堆栈大小
【发布时间】:2020-03-26 21:08:18
【问题描述】:

我正在使用 gcc 9.2cmake 3.15 在 Linux 上构建一个 C++ 项目,我需要增加默认堆栈大小。我之前找到了很多答案,但似乎没有一个有效

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,1000000")
message(${CMAKE_CXX_COMPILER_ID})
message(${CMAKE_EXE_LINKER_FLAGS})

它给出了一个错误:

/usr/bin/ld: unrecognized option '--stack'
/usr/bin/ld: use the --help option for usage information

我可以看到参数确实是在 cmake 输出中传递的:

GNU
-Wl,--stack,1000000

而且下面这个标志似乎根本不存在。

set(CMAKE_CXX_STACK_SIZE 1000000)

【问题讨论】:

  • 您是否尝试通过 -Wl,stack-size=1000000 代替?看起来ld 使用了stack-size
  • @squareskittles 不起作用。set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,stack-size=1000000") 得到 /usr/bin/ld: cannot find stack-size=1000000: No such file or directory。将= 更改为, 也不起作用。
  • 抱歉,我最初对文档有点困惑,看起来您在使用 stack-size 之前可能需要 -z 标志,所以也许,这会做到:`-Wl,-z堆栈大小=1000000
  • @KamilCuk OP 说该项目是“Linux using gcc 9.2”。
  • 是的,链接在我的第一条评论中。见here。看起来对于额外的ld“关键字”列表,需要添加-z标志。

标签: gcc cmake linker g++


【解决方案1】:

解决了。感谢@squareskittles 的评论。 应该是:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=1000000")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2016-12-07
    • 2011-07-01
    • 2014-07-31
    • 2010-09-14
    相关资源
    最近更新 更多