저는 Xcode 외부에서 개발 된 macOS dylib 프레임 워크를 개발 중이며 install_name
옵션의 중요성을 이해하려고합니다.macOS Mach-O dylib LC_ID_DYLIB 이름 또는 install_name의 의미는 무엇입니까?
예를 들어 install_name
인수를 사용하여 애플리케이션 번들의 프레임 워크에서 찾을 수있는 것과 비슷한 섹션을 설정할 수 있습니다.
clang++ ... -install_name @executable_path/../Frameworks/somelib.framework/Versions/somelib ...
그런 다음
otool -l
에 내 이름이 (기본적으로
-o
옵션을 일치) 기본값과 다른 바이너리에 설정되어있는 것을 볼 수 있습니다.
otool -l somelib
...
cmd LC_ID_DYLIB
cmdsize 96
name @executable_path/../Frameworks/somelib.framework/Versions/A/somelib (offset 24)
time stamp 1 Wed Dec 31 19:00:01 1969
current version 1.0.0
compatibility version 1.0.0
....
그래서 나는 그것을 설정하는 방법을 이해하지만, 내가 이해하지 못하는 것은 정확히 값은 그것이 있어야하는지 알고 사용된다 없으며, 내가 거기에 어떤 문서를 찾을 수있는 것입니다.
LC_LOAD_DYLIB
섹션에 바이너리를 찾는 위치에 대한 정보가 필요한 이유를 알 수 있습니다 (이 섹션은 다른 바이너리를 참조하므로).하지만 왜 dylib에 자체 정보가 필요한지에 대한 정보가 필요합니까? 바이너리와 연결되는 바이너리는 발견 된 바이너리 여야합니까?
정확히 macOS dylib LC_ID_DYLIB
install_name
은 무엇을합니까?
내가 무슨 뜻인지 알 것 같아. "이 파일은 링크 된 바이너리에 복사 될 경로입니다"라고 말하는 것이 합리적입니까? –
예, 정확합니다. – bdash