【发布时间】:2020-03-26 21:08:18
【问题描述】:
我正在使用 gcc 9.2 和 cmake 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标志。