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.411 ]

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

Configurando o libinput na unha

Desabilitando o indexador de arquivos Baloo no KDE Plasma

Alterar o gerenciador de login do openSUSE

Imprimindo para PDF a partir de programas rodando sob o Wine no openSUSE 13.2

Fontes TrueType da MS e Telegram Desktop no OpenSUSE

Leitura recomendada

Backup de Servidores de Arquivo Linux para Windows via rSync

Debian: autenticando usuários via LDAP

Syntax highlighting do Vim no Arch Linux

Ocultando Menu do Gnome no Manjaro

Desabilitando checagem de sistemas de arquivo na inicialização do Linux

  

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