main()
에서 함수 없이 다음 프로그램을 컴파일하고 실행하려고합니다 C
. 다음 명령을 사용하여 프로그램을 컴파일했습니다.
gcc -nostartfiles nomain.c
그리고 컴파일러는 경고를 제공합니다.
/usr/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000400340
알겠습니다. 문제 없습니다. 그런 다음 실행 파일 (a.out)을 실행하고 두 printf
명령문이 모두 성공적으로 인쇄 된 다음 분할 오류가 발생 합니다.
그래서, 내 질문은, 인쇄 문을 성공적으로 실행 한 후 왜 세분화 오류가 발생합니까?
내 코드 :
#include <stdio.h>
void nomain()
{
printf("Hello World...\n");
printf("Successfully run without main...\n");
}
산출:
Hello World...
Successfully run without main...
Segmentation fault (core dumped)
노트 :
여기서 -nostartfiles
gcc 플래그는 링크 할 때 컴파일러가 표준 시작 파일을 사용하지 못하도록합니다.