Frequently Asked Questions по FreeBSD 2.X : Разное : Почему используются (и что из себя представляют) форматы выполнимых
Previous: FreeBSD использует гораздо больше места в свопе, чем Linux. Почему?
Next: Да, но почему так много разных форматов?

12.2. Почему используются (и что из себя представляют) форматы выполнимых файлов a.aut и ELF?

Для понимания того, почему FreeBSD использует формат a.out, вы должны сначала получить представление о трёх "основных" форматах выполнимых файлов для UNIX:

FreeBSD выросла на "классических" традициях и традиционно использовала формат a.out, технологию, опробованную и проверенную во многих вариациях BSD. Хотя давно уже можно было компилировать и выполнять родные выполнимые файлы (и ядро) в формате ELF, FreeBSD с самого начала сопротивлялась переходу на ELF как на формат, используемый по умолчанию. Почему? Когда мир Linux делал болезненный переход к ELF, причин отвергнуть формат a.out было не так уж и много, разве что их негибкий механизм работы с совместно используемыми библиотеками, который был основан на таблице переходов, что делало построение таких библиотек очень затруднительным для разработчиков. Так как средства работы с ELF предоставляли решение этой проблемы и это было в общем-то "шагом вперёд" в любом случае, цена перехода была признана стоящей того и переход был сделан.

В случае FreeBSD, наш механизм работы с совместно используемыми библиотеками очень похож на механизм, применяемый в SunOS, поэтому его очень легко использовать. Однако, начиная с 3.0, FreeBSD официально поддерживает ELF как формат, используемый по умолчанию. И, хотя формат a.out поддерживается в полной мере, разработчики из проекта GNU, являющиеся авторами компилятора, который мы используем, больше не поддерживают формат a.out. Это заставило нас поддерживать различные версии компилятора и компоновщика, и не позволило воспользоваться всеми возможностями последних разработок GNU. Потребность в наличии реализации ISO-C++, в основном конструкторов и деструкторов, также привела к поддержке ELF в будущих релизах FreeBSD.


Frequently Asked Questions по FreeBSD 2.X : Разное : Почему используются (и что из себя представляют) форматы выполнимых
Previous: FreeBSD использует гораздо больше места в свопе, чем Linux. Почему?
Next: Да, но почему так много разных форматов?