使用 gcc 在 cmake 中设置堆栈大小

sz *_*ter 2 linker gcc g++ cmake

我正在使用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})
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误:

/usr/bin/ld: unrecognized option '--stack'
/usr/bin/ld: use the --help option for usage information
Run Code Online (Sandbox Code Playgroud)

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

GNU
-Wl,--stack,1000000
Run Code Online (Sandbox Code Playgroud)

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

set(CMAKE_CXX_STACK_SIZE 1000000)
Run Code Online (Sandbox Code Playgroud)

sz *_*ter 6

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

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=1000000")
Run Code Online (Sandbox Code Playgroud)