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
Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível
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.
Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível
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.
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
Re: Erro: /usr/bin/ld: erro: main.o: alvo incompatível
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.