CL에서의 링커 호출
/c 옵션을 사용하지 않는 한 CL은 컴파일 후 링커를 자동으로 호출합니다. CL은 컴파일하는 동안 생성된 .obj 파일의 이름과 명령줄에 지정된 다른 파일의 이름을 링커에 전달합니다. 링커는 LINK 환경 변수에 나열된 옵션을 사용합니다. /link 옵션을 사용하여 CL 명령줄에서 링커 옵션을 지정할 수 있습니다. /link 옵션을 따르는 옵션은 LINK 환경 변수의 옵션을 재정의합니다. 다음 표의 옵션은 연결을 표시하지 않습니다.
옵션 | 설명 |
---|---|
/c | 연결하지 않고 컴파일 |
/E, /EP, /P | 컴파일하거나 연결하지 않고 전처리 |
/Zg | 함수 프로토타입 생성 |
/Zs | 구문 검사 |
연결에 대한 자세한 내용은 MSVC 링커 옵션을 참조 하세요.
예시
MAIN.c, MOD1.c 및 MOD2.c의 세 가지 C 소스 파일을 컴파일한다고 가정합니다. 각 파일에는 다른 파일에 정의된 함수에 대한 호출이 포함됩니다.
MAIN.c는 MOD1.c의 함수
func1
와 MOD2.c의 함수func2
를 호출합니다.MOD1.c는 표준 라이브러리 함수 및
printf_s
scanf_s
.MOD2.c는 MYGRAPH.lib라는 라이브러리에 정의된 명명
myline
된mycircle
그래픽 함수를 호출합니다.
이 프로그램을 빌드하려면 다음 명령줄을 사용하여 컴파일합니다.
CL MAIN.c MOD1.C MOD2.C MYGRAPH.lib
CL은 먼저 C 소스 파일을 컴파일하고 MAIN.obj, MOD1.obj 및 MOD2.obj 개체 파일을 만듭니다. 컴파일러는 각 .obj 파일에 표준 라이브러리의 이름을 배치합니다. 자세한 내용은 런타임 라이브러리 사용을 참조 하세요.
CL은 이름 MYGRAPH.lib와 함께 .obj 파일의 이름을 링커에 전달합니다. 링커는 다음과 같이 외부 참조를 확인합니다.
MAIN.obj 참조
func1
는 MOD1.obj 정의를 사용하여 확인됩니다. 참조func2
는 MOD2.obj 정의를 사용하여 확인됩니다.MOD1.obj 링커가 MOD1.obj 내에서 명명된 라이브러리의 정의를 사용하여 참조
printf_s
및scanf_s
확인됩니다.MOD2.obj MYGRAPH.lib의 정의를 사용하여 참조
myline
및mycircle
확인됩니다.