Vamos analisar os fatores ...
Análise :
DEPENDENCIES DE ACORDO COM A PLATAFORMA : Existem alguns problemas que surgem em um ambiente em que os desenvolvedores criam e mantêm diversas variantes específicas da arquitetura de um aplicativo:
-
É necessário código-fonte diferente para variantes diferentes - Sistemas operacionais diferentes baseados em UNIX podem usar funções diferentes para implementar a mesma tarefa (por exemplo, strchr (3) vs. índice (3)). Da mesma forma, pode ser necessário incluir diferentes arquivos de cabeçalho para diferentes variantes (por exemplo, string.h vs. strings.h).
-
Diferentes procedimentos de construção são necessários para diferentes variantes - Os procedimentos de criação para diferentes plataformas variam. As diferenças podem envolver dados específicos como locais do compilador, opções do compilador e bibliotecas.
-
Os builds para diferentes variantes devem ser mantidos separados - Como há uma única árvore de origem, é preciso ter cuidado para garantir que os módulos de objeto e executáveis de uma arquitetura não se confundam com os de outras arquiteturas. Por exemplo, o editor de link não deve tentar criar um executável IRIX-5 usando um módulo de objeto que foi criado para o SunOS-4.
-
Todo sistema operacional tem seu próprio esquema de gerenciamento de links e deve preparar o arquivo ELF (Executable and Linking Format) conforme necessário.
-
O compilador gerará uma compilação que é uma sequência de instruções e arquiteturas distintas significam diferentes conjuntos de instruções ( Comparação de arquiteturas de conjuntos de instruções ). Assim, a saída do compilador é distinta para cada arquitetura (Ex: x86, x86-64, ARM, ARM64, Power ISA da IBM, PowerPC, 6800 da Motorola, MOS T 6502 e so muitos outros )
SEGURANÇA :
- Se você baixar um binário, não poderá ter certeza se ele faz o que ele diz, mas você pode tentar auditar o código-fonte e usar um binário compilado em seu sistema. Apesar disso, o usuário Techmag fez um bom comentário em seu comentário, a auditoria do código requer codificadores experientes e competentes para avaliar o código e não é uma garantia de segurança.
MARKET : Nesta seção, há muitos fatores, mas tentarei resumi-lo:
-
Nem toda empresa tem como objetivo alcançar todas as plataformas, depende do mercado e da popularidade das plataformas e do que elas querem vender.
-
O software livre tem o espírito de tornar o software o mais amplamente disponível possível, mas não implica que o software seja projetado para todas as plataformas, depende da comunidade que o suporta.
Conclusão :
Nem todo software é projetado para todas as plataformas. Fornecer binários para todas as arquiteturas e plataformas implica compilá-lo, testá-lo e mantê-lo para todas as plataformas. Isso é mais trabalho que às vezes é muito caro e pode ser evitado se o usuário o compilar em sua própria plataforma. Além disso, o usuário estará ciente do que está executando.