gcc로 C 파일 컴파일하기
C 프로그래밍이란
C는 절차적 프로그래밍 언어입니다. 1972년 Dennis Ritchie에 의해 처음 개발되었습니다. 주로 운영 체제를 작성하기 위한 시스템 프로그래밍 언어로 개발되었습니다. C 언어의 주요 기능에는 저수준 메모리 액세스, 간단한 키워드 집합 및 깔끔한 스타일이 포함되며, 이러한 기능을 통해 C 언어는 운영 체제 또는 컴파일러 개발과 같은 시스템 프로그래밍에 적합합니다.
C가 실행 가능하려면 먼저 컴파일해야 합니다.
gcc 소개
GNU C 컴파일러(GCC)의 원저자는 GNU 프로젝트의 창시자인 Richard Stallman입니다.
gcc는 주로 c 및 C++를 컴파일하는 데 사용되는 GNU 컴파일러 모음을 나타냅니다.
시스템에 있는 gcc 버전을 확인하려면 다음 명령을 사용하십시오.
gcc -v
통사론gcc [-C | -S | -E |] [-std = standard]
편집컴파일은 C 또는 C++와 같은 프로그래밍 언어로 된 텍스트 소스 코드에서 컴퓨터의 중앙 처리 장치(CPU)를 제어하는 데 사용되는 1과 0의 시퀀스인 기계 코드로 프로그램을 변환하는 과정을 말합니다. 그런 다음 이 기계 코드는 실행 파일이라는 파일에 저장되며 때로는 이진 파일이라고도 합니다.
파일.
컴파일러는 고급 프로그래밍 언어(예: C)로 작성된 소스 코드를 기계어와 같은 저급 언어로 번역하는 컴퓨터 프로그램입니다.
컴파일 과정
다음과 같이 컴파일 프로세스와 관련된 네 가지 주요 단계가 있습니다.
전처리
이것은 소스 코드가 전달되는 첫 번째 단계입니다.
출력은 파일 확장자
.i
로 저장됩니다.전처리 단계의 출력을 보려면 아래와 같이 명령
gcc -E filename.c
옵션을 사용할 수 있습니다.root@DESKTOP-TI71NAL:~# gcc -E helloworld.c
컴파일러
이 단계에서
filename.i
의 컴파일은 어셈블리 레벨에 있는 filename의 출력 파일을 컴파일하기 위해 발생합니다.username@hostname:~$ gcc -S filename.c
어셈블러여기에서
filename.s
를 입력으로 받아 어셈블러에서 filename.o
로 변환합니다.gcc -c filename.c
링커
함수 호출과 해당 정의의 모든 연결이 완료되는 마지막 단계입니다.
gcc
는 기본적으로 동적 연결을 수행하므로 printf()
는 동적으로 연결됩니다.링커에서 수행하는 작업은 다음과 같습니다.
옵션 1
다음 명령을 실행합니다.
username@hostname:~$ gcc helloworld.c
이 명령을 실행하면 컴파일러는 a.out이라는 실행 프로그램을 생성합니다. 실행 프로그램을 실행하려면 다음 명령을 입력하십시오.
username@hostname:~$ ./a.out
옵션 2
실행 프로그램에 다른 이름을 지정하려면 아래와 같이 컴파일 중인 파일 이름 뒤에 gcc 명령에 "-o"옵션을 추가할 수 있습니다.
username@hostname:~$ gcc helloworld.c -o helloworld
실행 프로그램을 실행하려면 아래 명령을 사용하십시오.
username@hostname:~$ ./helloworld
## gcc 옵션
-o
이 옵션은 출력에 사용됩니다.이렇게 하면 filename.c 가 컴파일되지만 기본 이름을 지정하는 대신 ./filename 을 사용하여 실행됩니다.
gcc filename.c -o filename
-werror
이것은 소스를 컴파일하고 프로그램에 오류가 있는 경우 경고를 표시합니다.gcc filename.c -werror -o filename
-wall
이것은 오류를 확인할 뿐만 아니라 다른 종류의 경고도 표시합니다.gcc filename.c -wall -o filename
Thanks for reading
Reference
이 문제에 관하여(gcc로 C 파일 컴파일하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/labank_/compiling-c-file-with-gcc-1kof텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)