erro gcc: class ELF errado: ELFCLASS64
Pergunta
Eu estava tentando compilar um programa usando uma coreset.o externo objeto compilado. Eu escrevi o arquivo de teste public01.c e minhas funções estão em computation.c, tanto de que compila. No entanto a sua falha em ligar-lo juntos. O que poderia ser o problema?
gcc -o public01.x public01.o computation.o coreset.o
ld: fatal: file coreset.o: wrong ELF class: ELFCLASS64
ld: fatal: File processing errors. No output written to public01.x
collect2: ld returned 1 exit status
Solução
Eu acho que coreset.o foi compilado para 64 bits, e você está ligando-o com um 32-bit computation.o.
Você pode tentar computation.c recompilação com a bandeira '-m64' da gcc (1)
Outras dicas
Você pode especificar '-m32' ou '-m64' para selecionar o modo de compilação.
Ao lidar com autoconf scripts (Configurar), eu costumo conjunto CC = "gcc -m64" (ou CC = "gcc -m32") no ambiente para que tudo é compilado com o bittiness correta. Pelo menos, normalmente ... as pessoas encontrar infinitas maneiras de fazer isso não funciona muito bem, mas a minha média de acertos é muito alta (maneira mais de 95%) com ele.
Acontece que a versão do compilador que eu estava usando não corresponde a versão compilada feito com o coreset.o.
Um era de 32 bits a outra era de 64 bits. Vou deixar isso no caso de alguém corre para um problema semelhante.
Parece que o arquivo objeto foi compilado em um 64-bit conjunto de ferramentas, e você estiver usando um conjunto de ferramentas de 32 bits. Você tentou recompilar o arquivo objeto no modo de 32 bits?
sudo apt-get install ia32-libs