C 링크는 실제로 어떻게 작동하나요?
C에서 링크는 여러 개체 파일(.o 파일)과 파일을 결합하는 프로세스입니다. 라이브러리(.a 또는 .so 파일)를 단일 실행 파일(.exe 또는 .out)로 변환합니다. 링커는 개체 파일과 라이브러리 간의 외부 참조를 확인하고 실행 파일을 실행하는 데 필요한 기호 테이블과 기타 정보를 생성합니다.
링크는 어떻게 이루어지나요?
재배치 실제
재배치 프로세스를 설명하려면 다음 예를 고려하십시오.
// a.cpp int a = 10; int main() { return a; }
// b.cpp int b = 20;
a.cpp와 b.cpp를 컴파일하면 a.o와 b.cpp라는 두 개의 객체 파일을 얻게 됩니다. b.o. a.o 파일에는 변수 a의 정의가 포함되어 있고, b.o에는 변수 b의 정의가 포함되어 있습니다.
a.o와 b.o를 함께 링크할 때 링커는 파일에서 a와 b에 대한 참조가 있는지 확인해야 합니다. 최종 실행 파일이 올바른 주소를 가리킵니다. 이는 재배치를 수행하여 수행됩니다.
재배치 중에 링커는 메모리의 최종 주소와 일치하도록 실행 파일의 a 및 b 주소를 수정합니다. 예를 들어 a가 주소 0x1000에 할당되고 b가 주소 0x2000에 할당된 경우 링커는 실행 파일의 a에 대한 모든 참조가 0x1000을 가리키도록 수정하고 b에 대한 모든 참조는 0x2000을 가리키도록 수정합니다.
이 프로세스를 통해 실행 파일이 실행될 때 변수 a 및 b에 올바르게 액세스할 수 있습니다.
위 내용은 C 연결은 어떻게 작동합니까? 개체 파일에서 실행 파일까지?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!