Até onde eu sei, os chamados "binários gordos" - arquivos executáveis que contêm código de máquina para vários sistemas - são realmente usados apenas em Apple PCs, e mesmo lá parece que eles só foram usados porque precisavam fazer a transição de PowerPC para x86.
Atualmente, muitos softwares são multiplataforma e parece que criar um único binário gordo seria, de muitas maneiras, mais simples do que acompanhar uma dúzia de downloads diferentes para cada combinação de sistema operacional e arquitetura, sem mencionar de alguma forma o transporte para o cliente qual deles eles querem.
Posso sugerir muitas suposições sobre por que essa abordagem nunca pegou, por exemplo:
- Falta de ferramentas de compilação cruzada inviabilizando binários multi-OS
- Você precisa testar o código em cada sistema operacional de qualquer maneira, para que você já precise ter sistemas que possam compilar nativamente para cada sistema operacional
- Aparentemente, programas de 32 bits "simplesmente funcionam" em máquinas de 64 bits já
- A vinculação dinâmica funciona de maneira diferente em cada sistema operacional; portanto, uma "biblioteca de gordura" pode não funcionar, mesmo que um "aplicativo de gordura" funcione
Mas como eu sempre trabalho com uma biblioteca ou estrutura que esconde todos esses detalhes específicos de SO e de arquitetura, não sei o quanto isso é verdade ou se há ainda mais problemas que não conheço. sobre. Então, quais são as razões reais pelas quais os binários gordos geralmente não são usados para criar software de arquitetura múltipla e / ou multi-SO? (fora da Apple)