so 파일의 INPUT 구문은 무엇입니까?

so 파일의 INPUT 구문은 무엇입니까?

x86_64 Ubuntu 16.04 사전 구축 바이너리에 대한 Clang을 조사했을 때 libc++.so가 실제 공유 라이브러리에 대한 소프트 링크가 아니라 텍스트가 포함된 텍스트 파일이라는 것을 발견했습니다.

INPUT(libc++.so.1 -lc++abi)

따라서 -lc++는 libc++.so.1에 연결한 다음 libc++abi에 연결하는 것과 동일합니다. Linux 책에서는 이러한 구문을 본 적이 없으며 유용한 참조를 찾을 수 없습니다. 또한 다음 정보가 포함된 libhaha.so를 작성해 보았습니다.

INPUT(-la -lb)

g++ main.cpp -lhaha가 g++ main.cpp -la -lb와 동일하다는 것을 확인하세요. 이런 기능은 clang에만 있는 것이 아니라, Linux에서도 흔히 볼 수 있는 기능인 것 같습니다. 이 함수의 구문이 무엇인지, 이 함수에 대해 설명하는 좋은 참고 자료가 있는지 알고 싶습니다. 이러한 기능은 단 하나의 공유 라이브러리가 아닌 일련의 공유 라이브러리에 대한 소프트 링크를 제공할 수 있기 때문에 매우 유용합니다.

답변1

이것은 GNU 링커의 기능입니다 ld. 알 수 없는 바이너리 형식의 입력 파일을 링커 스크립트로 사용하려고 합니다.

링커 스크립트에 대한 문서는 ld 매뉴얼에서 찾을 수 있습니다( info ld저도 찾았습니다).웹에서 복사.

관련 정보