gcc
gcc는 C, C++ 및 Objective-C용 컴파일 도구입니다. 일반적으로 프로그램을 실행하려면 컴퓨터가 실행할 수 있는 파일로 컴파일해야 합니다.
일반적인 명령 | 효과 |
---|---|
gcc -o 파일 | 출력을 파일 파일에 넣고 실행 파일을 생성합니다. |
gcc -c | 대상 파일 생성.o |
gcc -I 디렉토리 | 지정된 디렉토리에서 헤더 파일 검색 |
.c 파일과 사용된 .h 파일이 동일한 디렉터리에 있는 경우(표준 디렉터리의 헤더 파일 제외)
예:
$ tree
.
├── main.c
└── system.h
0 directories, 2 files
#main.c中调用了system.h的宏定义TIME=10
#main.c输出宏定义TIME
다음을 사용하여 직접gcc -o
실행 파일을 생성할 수도 있고, 먼저gcc -c
.o 파일을 생성한 다음< a i=3> 실행 파일:gcc -o
$ gcc main.c -o prog
$ ls
main.c prog system.h
$ ./prog
time=10
或者
$ gcc -c main.c
$ gcc main.o -o prog
.cs가 여러 개인 경우gcc 1.c 2.c -o prog
를 사용하세요.
.c 파일과 사용된 .h 파일이 동일한 디렉토리에 있지 않은 경우(표준 디렉토리의 헤더 파일 제외)
$ tree
.
├── main.c
└── system
└── system.h
1 directory, 2 files
이때 직접 입력$ gcc main.c -o prog
하면 오류가 발생합니다. (파일 system.h를 찾을 수 없습니다)
main.c:2:10: fatal error: system.h: No such file or directory
2 | #include "system.h"
| ^~~~~~~~~~
compilation terminated.
이때 입력해야 합니다gcc -I system/ main.c -o prog
즉, 먼저 -I를 사용하여 시스템의 system.h와 같이 파일이 있는 디렉터리를 지정합니다.
$ gcc -I system/ main.c -o prog
$ ls
main.c prog system
$ ./prog
time=10
或者
$ gcc -I system/ -c main.c
$ gcc main.o -o prog
메이크파일
make의 주요 기능은 대상 프로그램의 새 버전을 생성하는 데 필요한 단계를 수행하는 것입니다. 즉, 대규모 프로그램의 어느 부분을 재컴파일해야 하는지 자동으로 감지한 다음 이를 재컴파일하는 명령을 실행하는 것입니다. , 주로 다음을 생성하기 위해 makefile 파일을 사용하여 연결합니다. Makefile 파일은 일반적으로 makefile 및 Makefile로 끝납니다. ,GNUmakefile이름이 지정되었습니다.
메이크파일 뒤에 오는 형식:
目标文件:[相依文件...]
<tab>命令[#注释]
目标文件:[相依文件...]
<tab>命令[#注释]
...
참고: 명령을 실행하기 전에 키보드의 Tab 키를 누르라는 의미입니다!!!
그렇지 않으면 makefile이 잘못된 형식의 파일이 되어 오류가 발생합니다. 실행 시 보고됩니다.
makefile의 예를 들어보세요.
prog는 main.o에 의해 생성되고, main.o는 main.c에 의해 생성됩니다.
추가적으로 한 줄은 해당 생성 명령어이다.
prog:main.o
gcc main.o -o prog
main.o:main.c
gcc main.c -c
.h 파일과 .c 파일이 모두 같은 디렉터리에 있는 경우
현재 디렉터리에
$ tree
.
├── add.c
├── add.h
├── main.c
├── subtract.c
├── subtract.h
└── system.h
0 directories, 6 files
종속성은 다음과 같습니다.
main.c | system.h add.c 빼기.c |
---|---|
시스템.h | add.h 빼기.h |
추가.c | 추가.h |
빼기.c | 빼기 .h |
이제 prog를 컴파일하고 생성하기 위한 makefile을 작성합니다.
prog:main.o add.o subtract.o
gcc main.o add.o subtract.o -o prog
main.o:main.c system.h
gcc -c main.c
add.o:add.c
gcc -c add.c
subtract.o:subtract.c
gcc -c subtract.c
작업 결과:
$ make
gcc -c main.c
gcc -c add.c
gcc -c subtract.c
gcc main.o add.o subtract.o -o prog
$ ls
Makefile add.h main.c prog subtract.h system.h
add.c add.o main.o subtract.c subtract.o
$ ./prog
num1=3,num2=1$
.c 및 .h 파일이 동일한 디렉토리에 없는 경우:
$ tree
.
├── main.c
└── my_math
├── my_math.c
└── my_math.h
1 directory, 3 files
종속성은 다음과 같습니다.
main.c | my_math.c my_math.h |
---|---|
my_math.c | my_math.h |
이제 prog를 컴파일하고 생성하기 위한 makefile을 작성합니다.
prog:main.o my_math.o
gcc my_math.o main.o -o prog
main.o:main.c my_math/my_math.h
gcc -I my_math/ -c main.c
my_math.o:my_math/my_math.c
gcc -c my_math/my_math.c
실행 결과는 다음과 같습니다.
$ make
gcc -I my_math/ -c main.c
gcc -c my_math/my_math.c
gcc my_math.o main.o -o prog
$ ls
Makefile main.c main.o my_math my_math.o prog
$ ./prog
num1=3,num2=1