Я работаю над разработкой рамки dylib macOS, разработанной вне Xcode, и я пытаюсь понять значение опции install_name
.Какое значение имеет имя macOS Mach-O dylib LC_ID_DYLIB или имя_строки?
Например, я могу установить LC_ID_DYLIB
раздел 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
нуждаются в информации о том, где найти двоичный файл (поскольку эти разделы ссылаются на другие двоичные файлы), но почему дилибу нужна информация о том, где найти себя? Бинар, который ссылается на него, должен быть тем, который его находит?
Так что же такое macOS dylib LC_ID_DYLIB
install_name
do?
Думаю, я понимаю, что вы имеете в виду. Имеет ли смысл говорить: «Это путь, который будет скопирован в двоичные файлы, которые ссылаются на него»? –
Да, это точно. – bdash