The linker, rather than the compiler, is responsible for setting the stack size of the main thread. The man page for ld
contains the following:
-stack_size size
Specifies the maximum stack size for the main thread in a program. Without this
option a program has a 8MB stack. The argument size is a hexadecimal number with
an optional leading 0x. The size should be an even multiple of 4KB, that is the
last three hexadecimal digits should be zero.
For instance, to specify a 16MB stack you could do the following:
mrowe@apollo:~$ cc -Wl,-stack_size -Wl,0x1000000 -o test test.m
mrowe@apollo:~$ otool -lV test | grep stack
stacksize 16777216
Note the -Wl,
prefix on the arguments passed to cc
to have it pass them on to the linker.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…