gcc: Static Linking¶
여러 개의 소스 파일을 사용하여 정적 링크를 통해 하나의 실행 파일을 만드는 방법을 보여주는 문서임.
좀더 자세한 건 다음을 참고: Dynamic Linking
gcc
(GNU Compiler Collection),C
언어를 이용함.
Step 1: 소스 파일 및 헤더 파일 작성¶
main.c
파일은 프로그램의 entry point를 구현하고, 여러 object 파일의 함수를 호출함.
lib1.c
파일은 print_hello
함수를 정의함.
lib2.c
파일은 print_hi
함수를 정의.
헤더 파일
- 함수나 변수의 선언을 포함하여, 이 프로그램의 다른 부분에서 해당 요소를 사용할 수 있게 함.
- 헤더 파일을 사용함으로써 코드의 재사용성과 유지 관리 편해짐.
lib1.h
는 lib1.c
의 헤더파일로 print_hello
함수의 선언을 포함함.
- 헤더 파일은 함수의 선언을 포함하여,
- 이 함수를 사용하는 다른 C 파일에서 해당 함수가 무엇인지 알 수 있게 해주어 컴파일까지 가능하게 해 줌.
- 이후 Linking 을 통해 구현코드가 합쳐져서 executable 파일이 됨.
lib2.h
는 lib2.c
의 헤더파일로 print_world
함수의 선언을 포함.
- 헤더 파일은 중복 포함 방지를 위해
#ifndef
,#define
,#endif
를 사용함. - 이를 Include Guard 라고 하며, 여러 번 include (포함)되는 문제를 방지.
Step 2: 각 소스 파일을 오브젝트 파일로 컴파일¶
-c
: Compile Option- 각 소스 파일을 개별적으로 오브젝트 파일로 변환.
-o
: Output Option- 생성된 오브젝트 파일의 이름을 지정.
Step 3: 오브젝트 파일을 하나의 실행 파일로 링크¶
다음의 명령어는 static linking을 통해 모든 필요한 코드를 실행 파일에 포함시킴.
이를 통해 실행 파일이 독립적으로 동작할 수 있음.
main.o
,lib1.o
,lib2.o
를 하나의 실행 파일myexecutable
으로 합침.-o
: 링크된 최종 실행 파일의 이름을 지정. 여기서는myexecutable
입니다.