Corrigindo erro "File in wrong format" durante compilação de pacotes no Slackware 64

Publicado por Luís Fernando C. Cavalheiro em 10/02/2016

[ Hits: 2.588 ]

Blog: https://github.com/lcavalheiro/

 


Corrigindo erro "File in wrong format" durante compilação de pacotes no Slackware 64



Seres humanos e usuários do Viva o Linux, aqui começa mais uma Dica do Dino® trazendo para todos vocês informações tão fresquinhas e atuais quanto o Big Bang. Hoje vamos a uma rapidinha, já que nem sempre todo mundo tem tempo pra passar meia hora em plena atividade.

Na Dica do Dino® de hoje, vamos comentar sobre um erro irritante que às vezes acontece quando você está compilando coisas no Slackware 64. Vamos pegar o exemplo do celt. Usando o script SlackBuild disponível em SlackBuilds, na hora de montar o pacote vai dar um erro como o dessa mensagem aí:

/bin/sh ../libtool --tag=CC --mode=link x86_64-slackware-linux-gcc -std=gnu99 -O2 -fPIC -fvisibility=hidden -W -Wstrict-prototypes -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wno-parentheses -Wno-unused-parameter -Wno-sign-compare -o celtenc celtenc.o wav_io.o skeleton.o ../libcelt/libcelt0.la -L/usr/lib -logg -lm

libtool: link: x86_64-slackware-linux-gcc -std=gnu99 -O2 -fPIC -fvisibility=hidden -W -Wstrict-prototypes -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wno-parentheses -Wno-unused-parameter -Wno-sign-compare -o .libs/celtenc celtenc.o wav_io.o skeleton.o ../libcelt/.libs/libcelt0.so -L/usr/lib /usr/lib/libogg.so -lm -Wl,-rpath -Wl,/usr/lib64

/usr/lib/libogg.so: could not read symbols: File in wrong format
collect2: error: ld returned 1 exit status
make[2]: *** [celtenc] Error 1
make[2]: Leaving directory `/tmp/SBo/celt-0.11.3/tools'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/SBo/celt-0.11.3'
make: *** [all] Error 2
Esse erro não acontece quando você compila o pacote em 32 bits. Isso me fez pensar e pesquisar - como todo slacker precisa fazer, óbvio -, e eu sempre tinha a dica na ponta do Google para resolver meu problema. Porém, cada vez menos eu lembro das palavras chaves necessárias para chegar à solução (em Fontes há o link para a página na qual encontrei a solução do problema), e por isso decidi trazer para o Viva o Linux.

Mas por que isso acontece, Dino®?

Por alguma razão, na hora de compilar alguns pacotes o compilador não "adivinha" corretamente o diretório para as bibliotecas do sistema (que no Slackware é /usr/lib e no Slackware 64, /usr/lib64). Isso é comum em sistemas com multilib ativado. Resultado: o compilador tenta usar as bibliotecas de 32 bits, a maioria delas inexistentes no sistema, e por isso mesmo a coisa desanda.

Mas tem conserto, Dino®?

Meu querido, quando o assunto é Slackware tudo tem conserto - até mesmo a morte. A solução é bem simples até: você precisa passar o LDFLAGS correto para o compilador (ou para o script de compilação, caso você esteja usando um SlackBuild). O LDFLAGS determina onde o compilador vai buscar as bibliotecas instaladas no sistema, e se ele estiver errado a compilação simplesmente não ocorrerá. A flag é:

LDFLAGS="-L/usr/lib64"

Se você usa um script SlackBuild, será preciso passar a flag pro script:

# LDFLAGS="-L/usr/lib64" sh celt.SlackBuild

Mas se você compila na unha, sem script nem nada, é preciso passar a flag pro make:

LDFLAGS="-L/usr/lib64" make

Lembrando que é de muito bom tom compilar como usuário comum, e deixar apenas o make install para ser executado como root.

Conclusão

E é isso, senhoras, senhores, seres humanos e meninos do computador. Aqui se encerra mais uma Dica do Dino® trazendo para todos vocês mais uma pitada do Slack Original. Lembre-se das palavras do grande J. R. "Bob" Dobbs: o fim do mundo está próximo e você pode morrer no apocalipse!

Fonte: [SOLVED]I keep getting this error: "File in wrong format" - LinuxQuestions.org

Outras dicas deste autor

Gerencie a bateria do seu notebook usando o powertop

Flash, Java, Skype, Google Chrome e outros aplicativos - Instalação no Ubuntu 12.04

Alterando plano de fundo da tela de login do Fedora (GNOME)

FFmpeg: criando dois ou mais arquivos de saída simultaneamente

usbboot.img - A mídia de instalação mínima do Slackware

Leitura recomendada

Adicionar funcionalidades ao Touchpad

IPCalc via web

Como instalar Bunsenlabs Helium (Debian Stretch)

Slackware Linux substituindo Windows

Solução para erro: GPG error apt-get update NO_PUBKEY AED4B06F473041FA

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts