컴파일러와 링커의 차이점은 무엇입니까?
C의 컴파일러와 링커의 차이점은 무엇입니까?
컴파일러는 사람이 읽을 수 있는 프로그래밍 언어로 작성된 코드를 프로세서가 이해하는 기계 코드 표현으로 변환합니다.이 단계에서는 오브젝트파일을 만듭니다.
이 단계가 컴파일러에 의해 완료되면 호출 및 실행할 수 있는 작업 실행 파일을 작성하기 위해 다른 단계가 필요합니다.즉, 컴파일된 코드가 동작하기 위해 호출해야 하는 함수 호출(예를 들어)을 관련짓습니다.예를 들어, 당신의 코드는sprintfC 표준 라이브러리의 루틴입니다.코드에는 실제 서비스를 제공하는 기능이 없습니다.sprintf는 호출할 필요가 있다고 보고할 뿐이지만 실제 코드는 공통 C 라이브러리 어딘가에 존재합니다.이 링크(및 다른 많은 링크)를 실행하려면 링커를 호출해야 합니다.링크 후 실행할 수 있는 실제 실행 파일을 가져옵니다.
컴파일러는 소스 코드로부터 오브젝트 코드 파일(기계어)을 생성합니다.
링커는 이러한 오브젝트 코드 파일을 실행 파일로 결합합니다.
많은 IDE가 연속적으로 호출하기 때문에 실제로 링커가 동작하는 일은 없습니다.일부 언어/컴파일러에는 고유한 링커가 없으며 링크는 컴파일러 작업의 일부로 컴파일러에 의해 수행됩니다.
심플 워즈 -> 링커는 컴파일러가 (scanf 또는 printf 등)를 이해하지 못하기 때문에 .obj 파일을 라이브러리 함수와 링크할 필요가 있을 때마다 동작합니다.c 파일을 .obj 파일로 변환합니다.사용하는 라이브러리 함수를 이해하지 않고 오류가 없는 경우입니다.따라서 'obj' 파일을 'exe'(실행 가능 파일)로 만들기 위해서는 컴파일러가 라이브러리 기능을 이해할 수 있도록 하기 위해 링커가 필요합니다.
언급URL : https://stackoverflow.com/questions/3831312/what-are-the-differences-between-a-compiler-and-a-linker
'source' 카테고리의 다른 글
| Vuex: 이미 가져온 데이터를 기반으로 엑시스를 사용하여 데이터 가져오기 (0) | 2022.09.01 |
|---|---|
| Java 식별자에서 "연결 문자"란 무엇입니까? (0) | 2022.09.01 |
| 초기화, Guava UnmutableMap (0) | 2022.09.01 |
| glibc의 stren은 왜 이렇게 복잡해야 빨리 실행할 수 있나요? (0) | 2022.09.01 |
| 치명적인 오류: mpi.h: 해당 파일 또는 디렉토리 #이(가) 없습니다. (0) | 2022.09.01 |