Erro: /usr/bin/ld: erro: main.o: alvo incompatível

Erro: /usr/bin/ld: erro: main.o: alvo incompatível

por Lucas Silva -
Número de respostas: 4

Quando eu digito make no terminal aparece esse erro não só para o main.o, mas também para o graphic.o e o io.o, não sei por que isso está acontecendo

Em resposta à Lucas Silva

Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível

por José Coelho de Pina -

Quando eu digito make no terminal aparece esse erro não só para o main.o

Você já resolveu o problema?

Hmmm. Remova os arquivos .o e depois chame o make novamente.

meu_prompt> rm *.o
meu_prompt> make

Nos diga se resolveu.

Em resposta à José Coelho de Pina

Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível

por Lucas Silva -

Resolveu sim, professor. Muito obrigado. A propósito, por que esse erro aconteceu? Olhei em uns 2/3 sites, mas não encontrei nenhuma resposta.

Em resposta à Lucas Silva

Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível

por Caio Braz -

Até onde eu sei, as vezes os arquivos .o não são atualizados como deveriam pelo make... já tive uns problemas com isso e eu também não sei ao certo o motivo.

Eu sempre gero uma regra no meu Makefile assim:

clean:
<TAB>rm -f *.o

Assim você pode digitar "$make clean" pra limpar os .o

Em resposta à Lucas Silva

Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível

por José Coelho de Pina -

Apenas complementado o que o Caio escreveu.

Acho que para mim esse erro ocorre quando eu gero os .o em um computador (32 bits / 64 bits), copio eles para
um outro computador (64 bits / 32 bits) e tento gerar o executável do ep2.
Os .o são compatíveis com o executável que eu procurava gerar.

Para atualizar algum target o make verifica apenas as datas de atualizações.
Por exemplo, o io.o depende do io.c e io.h, se io.o foi gerado depois da última atualização
do io.c e io.h o make considera que o target io.o está atualizado e não precisa ser rebuilt.
Acho que é algo assim.

A próposito, no Makefile, a linha responsável por gerar o ep2 é essencialmente uma
chamada para o ld "lincar" todos os arquivos objeto: io.o, imagem.o graphic.o e main.o.