일단 a.c b.c 라는 파일을


gcc -o a.out a.c b.c


라는 명령으로 하나로 묶는 건 알고 있습니다. 실제로 연결시키는 실습도 해보았구요.


근데 이번에 여러파일을 묶는 새로운 방법을 봐서 작동원리가 궁금해서 한번 질문 드려봅니다.


main.c 파일에 error 라는 함수가 선언되어있습니다. 선언만 되어있습니다.


void error(char * message);


이런 식으로요. 그리고 어떤 정의도 없이 그냥 밑에서 사용합니다.



그리고 error.c에 error 함수에 대한 내용이 작성되어 있습니다.

즉 main.c error.c 두개의 파일이 있습니다.


여기까지는 제가 배운 방식이랑 똑같은데 여기부터 좀 다릅니다.


일단 error.h 파일이 없습니다. 당연히 main.c에서 error.c 관련 어떤 include도 없구요.


그리고 컴파일을 할때 과정이 이렇게 됩니다.


1. gcc -c error.c  -> 이 과정으로 error.o 가 나옵니다.


2. gcc -o file.out main.c error.o


이렇게 하면 file.out 이라는 실행파일이 나오게 됩니다. 실제 실행도 됩니다.


저는 완전 처음 보는 식으로 두 파일을 연결하더라고요. 너무 신기했습니다.


대충 보기엔 보통 include를 이용한 전처리기를 통해 두 파일을 연결시키는데  그 방식을 건너뛰고 수동으로 두 파일을 연결시키는 거 같은데 정확히 어떤 과정으로 진행된 건지 잘 모르겠어서 질문드립니다.