GNU 컴파일러로 C 컴파일하는 동안 스택 크기를 지정하기 위해 LD_FLAGS를 사용할 수 있는 macOS와 대조적으로 , SUSE Linux와 같은 Linux 배포판에서는 이러한 명령이 발생하면 오류가 표시됩니다. 이 문제는 Linux 링커 내에서 --stack 옵션을 사용할 수 없기 때문에 발생합니다.
이 장애물을 우회하기 위한 대체 접근 방식은 애플리케이션 자체 내에서 프로그래밍 방식으로 스택 크기를 설정하는 것입니다. 개발자는 setrlimit 기능을 활용하여 애플리케이션을 컴파일한 후 스택 크기를 수정할 수 있습니다. 다음은 예시 코드 조각입니다.
#include <sys/resource.h> int main (int argc, char **argv) { const rlim_t kStackSize = 16 * 1024 * 1024; // min stack size = 16 MB struct rlimit rl; int result; result = getrlimit(RLIMIT_STACK, &rl); if (result == 0) { if (rl.rlim_cur < kStackSize) { rl.rlim_cur = kStackSize; result = setrlimit(RLIMIT_STACK, &rl); if (result != 0) { fprintf(stderr, "setrlimit returned result = %d\n", result); } } } // ... return 0; }
이 방법을 사용하려면 main() 함수 내에서 큰 지역 변수를 선언하는 것을 피해야 합니다. 이렇게 하면 스택 크기 조정이 실행되기 전에 스택 오버플로가 발생할 수 있습니다. 대신, 스택 크기가 성공적으로 수정되면 main()에서 호출되는 함수에서 이러한 변수를 정의하십시오.
위 내용은 컴파일 중에 Linux에서 C 애플리케이션 스택 크기를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!