Pode ser necessário alterar o código fonte para compatibilidade?

1. Pode ser necessário alterar o código fonte para compatibilidade?

skjdeecedcnfncvnrfcnrncjvnjrnfvjcnjrjvcjrvcj
Londreslondres

(usa Parabola)

Enviado em 10/10/2020 - 19:32h

O que determina a compatibilidade de um software com um SO (GNU/Linux, Windows, Mac...) e sua arquitetura (i386, amd64, arm, sparc...) é a compilação, não é mesmo?

Gostaria de saber se o código fonte é sempre igual para todos os sistemas operacionais e arquiteturas ou, às vezes, pode ser necessário alterações no código fonte?


  


2. Re: Pode ser necessário alterar o código fonte para compatibilidade?

Samuel Leonardo
SamL

(usa XUbuntu)

Enviado em 10/10/2020 - 20:03h

Vou tentar resumir o assunto.
Basicamente é o seguinte:
Vamos supor que você decidiu escrever algum software em C no padrão ISO. Daí você segue todo o padrão e faz o soruce do programa todo nessa versão do C.
Até aqui ok, mas, e se você não planejou portar seu software para windows? E se não plnejou usar outro compilador que não o GCC?
É ai onde entra a portabilidade a nível de código fonte.
Como você não planejou de antemão portar para outros sistemas como windows ou mac ou mesmo bsd da vida, pode ser preciso refatorar o código para ele ficar adaptável ao compilador e ao mesmo tempo, ao sistema.
Por exemplo, suponha que nenhuma função diferente do padrão ISO foi usada e seu programa é apenas um programa de console. Nesse caso, como não houve umuso de funções não padronizadas, você pode usar o mesmo compilador (o GCC) em outros sistemas e gerar o executável no sistema alvo.

Como o que muda de fato não é bem o código fonte mas sim mais o binário final, um programa escrito em C padrão pode precisar apenas de um compilador para aquele padrão e um sistema (windows, mac, bsd etc) para ser compilado.

Agora, e se você por algum motivo quiser usar funções mais aprimoradas de um sistema, como que faz pra compilar nos outros que não têm as mesmas funções?
Ai no caso vai no planejamento de quais bibliotecas, frameworks, ou recursos usar, e no caso, cai sempre bem pegar um que seja multiplataforma.
Por exemplo, pegue ai minha lib favorita: o SDL2. Esta lib compila para diversos sistemas, android inclusive. Então, eu posso escrever um código em C e compilar com o GCC e rodar no linux. Posso pegar o mesmo código sem modificação (se eu não tiver usado nada que só funcione em linux) e compilar para windows sem modificar nada no source, o mesmo vale para todas as plataformas onde o SDL2 compila.

Então, pra resumir:
1-precisa planejar quais recursos (bibliotecas ou frameworks) irá usar no programa
2-dependendo de quais sistesmas esses recursos compilam, daí é pra esses sistemas que o source irá ser compilado
3-depois, para compilar para outros sistemas é preciso, ou compilar dentro do sistema alvo, ou apenas fazer compilação cruzada (cross compiling), nesse último caso é preciso que o compilador suporte a compilação para outro sistemas.

Falei bem por cima porque ainda tem consideração como:
1-arquitetura do processador, se é 32 ou 64 bits, ou mesmo 16, ou 8 bits etc
2-uso de funções que executam código de máquina, essas limitam o escopo de onde pode ser usadas e pra onde vao compilar

Recomendo a pesquisa no google de:
-cross compiling
-framework gráfico para C (gtk é um deles)
-versão padrão do C
-portabilidade de código com diretivas (vulgo macros)


____________________________________________
https://nerdki.blogspot.com/ acessa aí vai lá, é grátis!
Acesse meu GitHub:
https://github.com/cpusam
Capeta (demo) do meu trabalho:
https://cpusam.github.io/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts