“erro ao carregar bibliotecas compartilhadas: libGL.so.1: classe ELF errada: ELFCLASS32” instalando drivers da ATI

6

Eu estava seguindo as instruções na seção 3.2 de esta página .

Tudo correu bem até o passo 8, que é usar sudo amdconfig --initial  para criar um novo arquivo xorg.conf, mas recebo o seguinte erro:

amdconfig: error while loading shared libraries: libGL.so.1: wrong ELF class: ELFCLASS32

Eu tentei criar o arquivo /etc/ld.so.conf.d/lib32.conf com /usr/lib32 dentro, como a segunda resposta aqui sugerido, e correu sudo ldconfig mas nada mudou.

EDIT: Instalou libgl1-mesa-glx:i386 e executou sudo ldconfig , e o problema persistiu mesmo após a reinicialização.

EDIT2: Desde a etapa sete do primeiro link, após a reinicialização dos painéis superior e lateral da unidade e também do painel, estão faltando, mas suponho que isso será corrigido quando eu terminar a instalação dos drivers.

EDIT3: O mesmo erro acontece com o comando fglrxinfo e glxinfo (antes de seguir o passo 7, as informações de glx eram normais).

EDIT4: saída de lspci -v | grep -A10 VGA ( saída completa )

00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09) (prog-if 00 [VGA controller])
    Subsystem: Dell Device 0572
    Flags: bus master, fast devsel, latency 0, IRQ 45
    Memory at c1000000 (64-bit, non-prefetchable) [size=4M]
    Memory at b0000000 (64-bit, prefetchable) [size=256M]
    I/O ports at 4000 [size=64]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: <access denied>
    Kernel driver in use: i915
01:00.0 VGA compatible controller: Advanced Micro Devices [AMD] nee ATI Chelsea LP [Radeon HD 7730M] (prog-if 00 [VGA controller])
    Subsystem: Dell Device 0572
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at a0000000 (64-bit, prefetchable) [size=256M]
    Memory at c0000000 (64-bit, non-prefetchable) [size=256K]
    I/O ports at 3000 [size=256]
    Expansion ROM at c0040000 [disabled] [size=128K]
    Capabilities: <access denied>
    Kernel driver in use: fglrx_pci

EDIT: saída de dpkg -S libGL.so.1 :

       libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
       libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
    
por Ivan Lerner 14.08.2013 / 16:19

3 respostas

11

Observe que:

  

Para o Ubuntu 16.04 LTS e superior, o AMD Catalyst ou o driver fglrx não são mais suportados pela AMD.

Se você estiver usando 16.04 LTS ou acima, provavelmente você está sozinho. O que se segue destina-se apenas ao caso descrito na questão. Não posso garantir que funcionaria em versões posteriores.

O problema que resolvemos comentando é que você estava usando bibliotecas de 32 bits em um sistema de 64 bits.

  

classe ELF errada: ELFCLASS32

O final da aula deveria ter sido 64, produzindo esse erro. O caminho a seguir é limpar as bibliotecas de 32 bits e reinstalar os 64 bits.

sudo apt-get purge libgl1-mesa-glx:i386
sudo apt-get --reinstall install libgl1-mesa-glx

E atualizando nosso vinculador GNU:

sudo ldconfig

Quando tudo estiver ok, ldconfig -p | grep libGL.so.1 deve mostrar:

libGL.so.1 (libc6) => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
libGL.so.1 (libc6) => /usr/local/lib/libGL.so.1

Se você precisar das bibliotecas de 32 bits para executar aplicativos de 32 bits, poderá instalar o pacote libgl1-mesa-glx:i386 . Mas, neste caso, lembre-se de definir seu LD_LIBRARY_PATH temporariamente para o local onde estão as bibliotecas do 32bits, para que ele não atrapalhe seus outros programas.

 export LD_LIBRARY_PATH="/path/to/library/"
 ./run_some_32_bit_program
    
por Braiam 15.08.2013 / 21:06
0

Em vez de editar o arquivo ld.so.conf diretamente, crie um arquivo chamado local.conf no subdiretório /etc/ld.so.conf.d contendo apenas a linha / usr / local / lib. Isto é,

Conteúdo do /etc/ld.so.conf.d/local.conf:

/ usr / lib64

Em seguida, execute o comando ldconfig. (Isto assume que o arquivo /etc/ld.so.conf contém a linha include /etc/ld.so.conf.d / *. Conf.)

Você só precisa fazer isso uma vez.

    
por goel 08.04.2014 / 16:48
0

Eu estava sofrendo de repente o mesmo problema depois de uma atualização do kernel. Não consegui entrar na interface gráfica. Executando o comando "aticonfig" recebi este erro e também o encontrei no Xorg.0.log. Estou executando um Debian Jessie 64bit System com bibliotecas de 32 bits para softwares como wine e skype. Remover o pacote "libgl1-mesa-glx: i386" também desinstalou skype e wine32 e não resolveu o problema.

Descobri que o instalador do driver AMD cria um link errado para a biblioteca de 32 bits devido a uma má interpretação da arquitetura do sistema, embora aparentemente reconhecesse a arquitetura corretamente dentro do programa Installer.

A execução do comando de localização da biblioteca pode fornecer as seguintes informações:

# find / -name libGL.so*
/usr/lib/i386-linux-gnu/libGL.so.1
/usr/lib/i386-linux-gnu/libGL.so
/usr/lib/i386-linux-gnu/libGL.so.1.2
/usr/lib/i386-linux-gnu/libGL.so.1.2.0
/usr/lib/libGL.so
/usr/lib/libGL.so.1.2
/usr/lib/libGL.so.1
/usr/lib64/libGL.so.1.2
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so

Mas você descobrirá que as bibliotecas padrão do sistema em "/ usr / lib" estão vinculadas a versões de bibliotecas em "/ usr / lib / i386-linux-gnu /", o que torna a versão de 32 bits da libGL.so .1 biblioteca a versão padrão. Este link é criado pelo instalador do driver AMD devido a uma má interpretação da estrutura do sistema. Este erro vem de ter um diretório "/ usr / lib64 /" no sistema. Um Sistema de 64 bits não possui uma pasta "/ usr / lib64 /" porque todas as versões de 64 bits das bibliotecas estão localizadas em "/ usr / lib /". Assim, o instalador confunde o sistema com um sistema de 32 bits e cria o link para a versão de 32 bits de "libGL.so.1"

Como você pode consertar isso? - Primeiro execute o desinstalador do driver em "/ usr / share / ati"

# ls -lah /usr/share/ati
-rw-r--r--   1 root root 2,4K oct 19 20:51 fglrx-install.log
-rwxr--r--   1 root root  18K oct 19 20:51 fglrx-uninstall.sh

Isso removerá todos os links errados.

Mesmo após essa etapa, eu já consegui um login gráfico com um aviso por não ter o driver proprietário.

  • Em seguida, você renomeia o diretório "/ usr / lib64 /" para desativá-lo.
    # cd /usr
    # ls -lah
    drwxr-xr-x 182 root root   40K oct 19 20:50 lib
    drwxr-xr-x   5 root root  4,0K oct 19 20:40 lib64
    # pwd
    /usr
    # mv lib64 lib64_2015-10-19
    # ls -lah
    drwxr-xr-x 182 root root   40K oct 19 20:50 lib
    drwxr-xr-x   5 root root  4,0K oct 19 20:40 lib64_2015-10-19
  • Então você volta para o seu Instalador do Driver AMD e o executa novamente.

Agora você encontrará o link correto para a versão de 64 bits do libGL.so.1.

# ls -lah /usr/lib/libGL.so.1.2
lrwxrwxrwx 1 root root 33 oct 19 20:50 /usr/lib/libGL.so.1.2 -> /usr/lib/fglrx/fglrx-libGL.so.1.2

Agora você pode conseguir um login gráfico novamente como de costume.

    
por Bodo Hugo Barwich 20.10.2015 / 02:12