Статически соединенные двоичные файлы на Mac OS X
Q: Я пытаюсь соединить свой двоичный файл статически, но ему не удается соединиться, потому что он не может найти crt0.o. Почему?
A: Прежде, чем обсудить этот вопрос, важно согласиться с терминологией:
Статическая библиотека является библиотекой кода, который может быть соединен в двоичный файл, который будет, в конечном счете, динамично соединен с системными библиотеками и платформами.
Статически соединенный двоичный файл является тем, не импортирующим системные библиотеки и платформы динамично, но вместо этого выполняющим вызовы целевой системы в ядро.
Apple полностью поддерживает статические библиотеки; если Вы хотите создать один, только запустите с надлежащего XCode или целевой шаблон проекта.
Apple не поддерживает статически соединенные двоичные файлы на Mac OS X. Статически соединенный двоичный файл принимает совместимость на уровне двоичных кодов в интерфейсе системного вызова ядра, и мы не делаем гарантий на той передней стороне. Скорее мы стремимся гарантировать совместимость на уровне двоичных кодов в каждой динамично соединенной системной библиотеке и платформе.
Если Ваш проект абсолютно должен создать статически соединенный двоичный файл, можно добраться Csu (C запуск) модуль от Дарвина и здания попытки crt0.o для себя. Очевидно, мы не будем поддерживать такое усилие.
История версии документа
| Дата | Примечания |
|---|---|
| 20.09.2011 | Переписанный для разъяснения позиции Apple на статически соединенных двоичных файлах. |
| 07.02.2002 | Новый документ, объясняющий, что статически соединил двоичные файлы, не поддерживается на Mac OS X. |