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
확인됩니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기