Насколько я знаю, так называемые «толстые двоичные файлы» - исполняемые файлы, содержащие машинный код для нескольких систем, - действительно используются только на компьютерах Apple, и даже там кажется, что они использовали их только потому, что им нужно было перейти с PowerPC для x86.
В настоящее время большая часть программного обеспечения является кроссплатформенной, и кажется, что сделать один толстый двоичный файл во многих отношениях проще, чем отслеживать дюжину или около того различных загрузок для каждой комбинации операционной системы и архитектуры, не говоря уже о том, как передавать клиенту, какой они хотят.
Я могу придумать множество предположений о том, почему этот подход никогда не завоевывал популярность, например:
- Отсутствие инструментов кросс-компиляции, делающих невозможным использование бинарных файлов для нескольких ОС
- В любом случае вам необходимо протестировать код на каждой ОС, поэтому у вас уже должны быть системы, которые могут компилироваться для каждой ОС.
- Видимо 32-битные программы "просто работают" уже на 64-битных машинах
- Динамическое связывание работает по-разному в каждой ОС, поэтому «толстая библиотека» может не работать, даже если «толстое приложение» будет
Но так как я всегда работаю с библиотекой или фреймворком, который скрывает от меня все эти специфичные для ОС и архитектурные детали, я не знаю, насколько это правда, или есть еще проблемы, которых я не знаю около. Итак, каковы реальные причины, по которым толстые двоичные файлы обычно не используются для создания программного обеспечения с несколькими архитектурами и / или несколькими ОС? (вне Apple)