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: 3.438 ]

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

Reproduzindo Playlists do YouTube pelo VLC

Slackpkg: escolha qual programa usar para fazer o download de dados

Utilizando as configurações do GNOME em outros gerenciadores de janelas

Removendo os daemons do Evolution e do Tracker (o indexador de arquivos) da inicialização automática do GNOME 3.x

ALSA e headsets USB: hotplugging

Leitura recomendada

Fluxbox-devel em teu GDM

Personalizando o terminal do Gnome + teclas de atalho

Desabilitar tela de dicas de atalhos de teclado do Ubuntu 12.04

Fedora Kinoite 40 — Instalação de drivers NVIDIA e Xorg

Colocando seu script do iptables no lugar correto na inicialização

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts