![바이너리 연결과 기호 링크 사이에 어떤 관계가 있습니까?](https://linux55.com/image/60418/%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%20%EC%97%B0%EA%B2%B0%EA%B3%BC%20%EA%B8%B0%ED%98%B8%20%EB%A7%81%ED%81%AC%20%EC%82%AC%EC%9D%B4%EC%97%90%20%EC%96%B4%EB%96%A4%20%EA%B4%80%EA%B3%84%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
바이너리 링크(예: 동적 또는 정적 링크)와 기호 링크 사이에 관계가 있습니까? 그들은 어떤 방식으로 상호 작용합니까, 아니면 일부 역사를 공유합니까, 아니면 완전히 직교하는 이 두 개념이 우연히 유사하다고 불렸습니까?
답변1
별말씀을요. 하나는 파일 이름(모든 유형의 파일)에 대한 모든 참조를 다른 파일(기호 링크)로 리디렉션하는 것이고, 다른 하나는 라이브러리에서 실행 파일(정적 링크)로 코드를 복사하거나 동적 라이브러리를 참조하는 것입니다. 필요한 코드를 작성하고 런타임 시 동적 라이브러리를 로드합니다.
답변2
예, "(텍스트) 키를 사용하여 명명된 리소스 찾기"라는 추상적인 의미인 "링크"라는 단어에 대한 일반적인 의미를 갖습니다. 먼저 "일반" 유형의 파일 링크(하드 링크)를 살펴보는 것이 도움이 됩니다.
ㅏ하드 링크디스크의 특정 파일을 해당 이름에 대한 포인터와 연결하는 Unix 디렉터리의 항목입니다.인덱스 노드. 파일에 액세스(열기, stat
편집)하면 파일 시스템 드라이버는 요청된 이름에 해당하는 inode를 찾습니다. 디렉토리는 이 목록에서 이름을 inode 번호에 연결하는 테이블입니다. 앞의 숫자는 파일이 실제로 저장되는 inode입니다.
6951168 -rwxr-xr-x 1 christopher christopher 209 Apr 24 2014 CAPS
6951172 -rwxr-xr-x 1 christopher christopher 976 Aug 6 2012 offline
6951175 -rwxr-xr-x 1 christopher christopher 541 Apr 8 2014 records-backup.sh
6950166 -rwxr-xr-x 1 christopher christopher 778 Nov 4 07:05 switch-monitors.sh
ㅏ심볼릭 링크inode를 직접 가리키는 것이 아니라 내부에 상대 경로가 있는 특수한 작은 텍스트 파일을 가리키는 함수입니다. 대부분의 경우 일반 하드 링크처럼 보이며 이름은 비유에서 파생됩니다.
ㅏ커넥터ld.so
하드 링크를 사용하여 파일 시스템이 수행하는 작업과 유사한 작업을 수행한다는 의미입니다. C(및 호환 가능한) 프로그램 사용기호표프로그램이 다른 라이브러리에서 호출하려는 함수의 이름을 나열합니다. 링커는 요청된 각 이름에 해당하는 함수의 메모리 위치를 찾아 채웁니다(정확한 방법은 다양함).