Compilar programa para rodar em computadores direfentes

1. Compilar programa para rodar em computadores direfentes

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 19/07/2014 - 22:29h

Boa noite pessoal,
Já faz algum tempo eu tenho essa dúvida e estou a fim de saná-la, quem souber por favor me ajude ou pelo menos me ajude.

É fato que se eu escrever um programa em c e compilá-lo em um GNU/Linux ele não irá rodar em outro sistema, quanto a isso e não tenho dúvidas, mas uma coisa que venho notando é o seguinte, eu escreve programas em c em GNU/Linux, compilo, pego o bendito executável e tento rodar em outro GNU/Linux e ele simplesmente não funciona a não ser que eu compile no outro computador. Sendo assim a dúvida é:

-Como compilar um executável para que ele rode em qualquer distro GNU/Linux sem problemas?


  


2. Re: Compilar programa para rodar em computadores direfentes

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 19/07/2014 - 22:35h

Para linux voce compila assim

gcc -o Teste Teste.c 


Para Windows vc Compila Assim

gcc -o Teste.exe Teste.c 


pesquise tambem sobre ifndef vai te ajudar a criar programas como uma opcao para linux e outa para windows

Te+


3. Re: Compilar programa para rodar em computadores direfentes

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 19/07/2014 - 22:42h

o problema é justamente esse, eu já compilo dessa maneira, e funciona perfeitamente o executável aqui no meu computador, tanto no Arch quanto no Ubuntu, o problema é justamente quando eu pego esse executável e levo para outro computador qualquer que seja, com uma distro GNU/Linux instalada, dou permissões de execução, mas ele simplesmente não funciona.

Sempre que mudo de computador é preciso pegar o código e compilar de novo, e eu quero que esse executável rode em outro computador (com GNU/Linux) sem precisar compilar de novo.




4. Re: Compilar programa para rodar em computadores direfentes

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 19/07/2014 - 22:53h

Olha,eu sei que 'c' é 'facil',mas tenta dar uma olha em java,por que é para todos os sistemas , mas para c , da uma olhada aki:

http://www.hardware.com.br/comunidade/identificar-sistema/1095909/ 

Te +


5. Re: Compilar programa para rodar em computadores direfentes

Alberto Federman Neto.
albfneto

(usa openSUSE)

Enviado em 19/07/2014 - 23:10h

não sou especialista,nem sequer profissional de TI,

mas você não teria que ajustar as FLAGS do GCC, para uma arquitetura de 64 bits, geral, ou multilib?


6. Re: Compilar programa para rodar em computadores direfentes

Rafael
odinhatesawk

(usa Gentoo)

Enviado em 19/07/2014 - 23:45h

albfneto escreveu:

não sou especialista,nem sequer profissional de TI,

mas você não teria que ajustar as FLAGS do GCC, para uma arquitetura de 64 bits, geral, ou multilib?


Teria.

O GCC vai compilar para o sistema no qual ele está rodando.
Se você levar pra outra arquitetura, não vai rolar.


7. Re: Compilar programa para rodar em computadores direfentes

Rafael
odinhatesawk

(usa Gentoo)

Enviado em 19/07/2014 - 23:49h

http://cm.bell-labs.com/who/dmr/portpap.html


8. Re: Compilar programa para rodar em computadores direfentes

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 20/07/2014 - 01:55h

conforme o que vocês me citaram, já imagino o que aconteceu no meu caso, realmente é o outro computador que eu testei que deve ter a libc com versão mais antiga, pq aqui o mesmo executável roda tanto no arch quanto no ubuntu 14.04, agora já no outro computador que eu testei, alem de ele ser 32 bits o ubuntu está na versão 12.04, então provavelmente é a incompatibilidade da arquiteturas (que eu já imaginava que deveria existir) e mais o fator da versão da biblioteca. Nesse caso vou mandar o executável a alguns colegas que usam ubuntu aqui na região e que usam mesma distro e versão da libc.

De todo modo agradeço a todos e vou deixar em aberto por alguns dias para o caso de alguém ter mais alguma sugestão. Se tiverem postem aí.


9. Re: Compilar programa para rodar em computadores direfentes

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 20/07/2014 - 12:59h

Colega,

Um programa executável que roda num Linux 1.0 vai rodar num Linux 2.0, porque as bibliotecas e funções são modificadas ao longo do tempo.

Os programadores das bibliotecas fazem modificação de acordo com uma arquitetura ou até mesmo melhorias.

Até no Windows é assim.

Se vc tiver um programa que roda no win98, ele não vai rodar um Win7.

O que vc consegue fazer é escrever um programa para uma versão Linux 1.0 e informar que o seu programa só roda num Linux daquela versão.

Isso é assim para um monte de Linux.

Agora se vc quer ter um software portável em C/C++ que roda em diversos sistema diferentes, você pode utilizar diretivas de compilação, também chamado de preprocessor.

Ai para funcionar o seu programa vc precisará compilar o seu programa na plataforma que vc deseja executar, ai uma vez compilado é gerado o objeto linkado. Vc pode pegar esse programa e coloca-lo para executar em outras máquina da mesma versão e arquitetura.

Com o uso do preprocessor, vc pode compilar o mesmo código em diversas plataformas de SO diferentes.


Espero te ajudado.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts