Como resolvo um erro “Não é possível abrir o arquivo de objeto compartilhado libudev.so.0”?

78

Tentando executar Jogo Dev Tycoon no Ubuntu 64. Ele pede o objeto acima.

Eu corri sudo apt-get install libudev1:i386 e ele voltou já instalado.

Eu tenho /lib/i386-linux-gnu/libudev.so.1 , mas não libudev.so.0 em qualquer lugar.

    
por senshikaze 01.05.2013 / 02:27

15 respostas

25

Para o Ubuntu de 64 bits, ele está no pacote libudev0 de 32 bits.

Você pode instalá-lo com o seguinte comando:

sudo apt-get install libudev0:i386

Este pacote foi removido do Ubuntu em 14.04. Você precisará instalá-lo de uma versão mais antiga.

    
por Sean 01.05.2013 / 15:42
193

Para corrigir, vinculei libudev.so.1 a libudev.so.0 :

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
    
por senshikaze 01.05.2013 / 02:27
50

Para o Ubuntu 14.04 e acima

O método mais fácil que encontrei foi apenas baixar baixar o .deb ( link direto para download de 64 bits e para download de 32 bits ) e clique duas vezes nele para instalá-lo ou use o dpkg para instalá-lo:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Para versões anteriores

Na versão anterior do ubuntu este pacote estava disponível nos repositórios oficiais. Você pode instalar com o seguinte:

sudo apt-get install libudev0:i386
    
por Ryan Crichton 06.03.2015 / 11:46
29

Eu tive o mesmo problema para um programa diferente, mas a resposta aceita por Sean não me ajudou em nada. Na minha instalação atualizada do 13.04 de 64 bits, o libudev0 não está disponível no formato de 64 bits nem no formato i386. E o ia32-libs já está instalado. Então não há dados.

O que eu tive que fazer foi uma versão mais modificada da solução mais técnica da senshikaze. Eu vinculei manualmente o libudev.so.0 ao libudev.so.1 no diretório lib x86_64, assim:

cd /lib/x86_64-linux-gnu/
sudo ln -sf libudev.so.1 libudev.so.0

Isso consertou para mim.

    
por Cliff 10.06.2013 / 01:49
5

Esse erro pode ocorrer ao tentar usar o executável nw do Node Webkit . Assim:

./nw: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

Como resolver:

  1. Obtenha o editor hexadecimal que permite alterar a cadeia de caracteres ASCII do binário, por exemplo. hexedit :

    • No terminal ( Ctrl + Alt + T ), execute: sudo apt-get install hexedit .
    • Siga as instruções apresentadas no terminal (digite a senha, se necessário, confirme a instalação).
  2. Ir para o diretório com o node webkit :
    • No meu caso: cd ~/Dokumenty/node-webkit-* .
  3. Abra o binário nw usando o comando editor hexadecimal precedido por sudo :
    • Executar: sudo hexedit nw .
  4. Pesquise libudev.so.0 como string ASCII:
    • Se estiver usando hexedit : Pressione a tecla Tab .
    • Pressione Ctrl + S .
    • Tipo: libudev.so.0 .
  5. Altere 0 em libudev.so.0 string para 1 , por isso, torna-se: libudev.so.1 :
    • Use as teclas de seta para selecionar 0 em libudev.so.0 string.
    • Pressione 1 no teclado.
  6. Saia e salve as alterações.
    • Pressione Ctrl + X .
    • Pressione Y para salvar as alterações.

Você está feito. Isso também corrige o problema com o binário Atraci ao seguir as mesmas instruções, exceto o arquivo Atraci de edição hexadecimal em vez de nw.

    
por Daniel Kmak 27.04.2014 / 10:42
4

A única resposta aqui que funciona no Ubuntu 14.04 é a resposta aceita, e uma vez que muitos comentários apontam que isso pode causar problemas com o sistema (embora eu não saiba disso), eu criei um compromisso. Este script solicitará (no terminal) sua senha de root. Ele irá criar o link simbólico e iniciar o aplicativo (no meu caso, o horário da pipoca). Quando você sair do aplicativo, ele usará a sessão sudo existente para remover o link simbólico:

#!/bin/sh
sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
./Popcorn-Time #replace this line with the path to the executable you want to launch
sudo rm /lib/i386-linux-gnu/libudev.so.0
    
por TenLeftFingers 15.04.2014 / 21:59
4

Acabei de encontrar uma maneira de fazer este trabalho, é muito bobo embora.

Eu tenho o Google Chrome instalado no meu sistema e o Chrome tem esse objeto compartilhado incorporado. Então, eu tive que fazer um link simbólico para a biblioteca no diretório de instalação do Chrome.

ln -sf /opt/google/chrome/libudev.so.0 /lib/x86_64-linux-gnu/libudev.so.0

Funciona muito bem para mim.

    
por nunesvictor 09.05.2014 / 15:28
3

Esta foi a solução mais simples que encontrei

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
    
por Weston Ganger 09.01.2015 / 07:26
2

como Phil Strong apontou

instale libudev.so.1

sudo apt-get install libudev1:i386

vincule-o como libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
    
por Zeroows 06.06.2015 / 05:29
1

eu fiz isso em 14.04, mas deveria ser similar. basta apagar o pacote e reinstalar. as bibliotecas corretas estão instaladas apropriadamente.

apt-get purge google-chrome-stable
apt-get install google-chrome-stable

Eu tenho certeza que as outras respostas funcionam, mas eu tenho uma base básica na modificação de objetos do sistema de arquivos que são gerenciados por pacotes de gerenciamento de configuração.

    
por MARK SMITH 09.09.2014 / 13:44
1

Isso é o que eu usei para resolver o mesmo problema no Ubuntu 15.04 de 32 bits.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
    
por user491326 09.01.2016 / 20:33
0

UPDATE Eu fiz um script bash para envolver o programa que você quer executar. Você pode adicioná-lo à sua pasta bin local e iniciar o programa sem a cópia & amp; colar ou executar scripts de shell.

#!/bin/bash

ProgramToExecute="/PATH/TO/PROGRAM" #Example: $HOME/dart/./DartEditor

system=$(uname -m) #Returns x86_64 on 64 bit systems
libdir="/lib/$system-linux-gnu"
libudev1="$libdir/libudev.so.1"

if [ ! -f $libudev1 ]
then
        #check if an i386 folder exist because ' uname -m' returns i686 instead of i386.
        libdir="/lib/i386-linux-gnu"
        libudev1="$libdir/libudev.so.1"
        #if none of the lookups return a file, this script exits,
        BreakUpNotice="This $libudev1 isn't working out. It's not you
        it's me. Or maybe you forgot to install libudev1 library.
        sudo apt-get install libudev1 "

        [ ! -f $libudev1 ] && echo $BreakUpNotice  && exit 0
fi

libudev0="$libdir/libudev.so.0"

echo "$libudev1 found."
sudo ln -sf $libudev1 $libudev0
sudo -k #revoke sudo 
$($ProgramToExecute)

NoticeAfterExec="Enter sudo to del libudev link (recommended) or press CTRL+C to cancel."
RmSuccess="And $libudev0 link is gone."
RmFailed="Whaat? $libudev0 still exists."

echo $NoticeAfterExec
sudo rm $libudev0
sudo -k
[ ! -f "$libudev0" ]  && echo $RmSuccess || echo $RmFailed
exit 

RESPOSTA ANTIGA No Ubuntu 14.04 eu estava recebendo a mensagem de erro do Dart Editor ao tentar usar o Live Preview (Chromium). O erro foi resolvido instalando o libudev1 e criando um link simbólico .

    sudo apt-get install libudev1

Eu também usei o script mencionado acima por TenLeftFingers para executar o DartEditor.

    #!/bin/sh
    sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
    ./DartEditor
    sudo rm /lib/i386-linux-gnu/libudev.so.0

Se o DART Editor não for executado, certifique-se de que o JAVA esteja instalado e que não seja um problema de permissão.

    sudo apt-get install python-software-properties
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java7-installer

e torne o executável do IDE:

    sudo chmod a+x ./DartEditor

Isso funcionou para mim.

    
por Diaz 26.05.2014 / 02:28
0

Eu estava recebendo o mesmo erro no meu sistema de 32 bits após a atualização do Xubuntu Precise para o Trusty. Isso resolveu para mim:

sudo dpkg-reconfigure google-chrome-stable

Encontrei aqui . Com absolutamente nenhum parâmetro, não tenho certeza de como isso resolveu, mas aconteceu. O que eu mais gostei é que ele não exigia nada que potencialmente causaria problemas para mim no futuro, e não exigia que eu caçasse em nenhum pacote.

    
por undrline 15.08.2014 / 00:06
-1

Se alguém tropeçar nesta página enquanto busca na web correções no libudev.so.0 & amp; Emotiv Epoc SDK Dev Edition no Ubuntu, espero que o seguinte ajude:

// minha configuração é 64bit Ubuntu 13.04

Para um sistema de 64 bits:

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1. /lib/x86_64-linux-gnu/libudev.so.1

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

o que permite evitar o "erro ao carregar bibliotecas compartilhadas: libudev.so.0: classe ELF errada: ELFCLASS32"

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

Para um sistema de 32 bits:

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1. /lib/i386-linux-gnu/libudev.so.1

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0

o que permite evitar o "erro ao carregar bibliotecas compartilhadas: libudev.so.0: classe ELF errada: ELFCLASS64" (note que é um palpite, estou em um sistema de 64 bits)

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

O EmotivControlPanel, EmoKey, EmoComposer, os exemplos de Java & amp; pequenos exemplos Qt personalizados devem ser capazes de executar depois de fazer o acima (eu já tentei todos os passos acima + outros encontrados na web (estouro de pilha, ..), mas nenhum estava trabalhando para mim, e é isso que eu acabei fazendo depois alguns "tentar & amp; erros"

Por último, mas não menos importante, se alguém aqui sabe como executar programas compilados em bibliotecas de 32 bits em um sistema de 64 bits, ao mesmo tempo em que especifica a utilização de uma biblioteca de 32 bits de terceiros?

% bl0ck_qu0te%

- > pelo que eu tentei até agora, o máximo que consegui foi: "erro ao carregar bibliotecas compartilhadas: libedk.so.1: classe ELF errada: ELFCLASS64"

Eu acho que um symlink para essa biblioteca no diretório i386 não seria (embora eu não tenha tentado ainda), então se alguém tiver uma resposta ... Estou ansioso para lê-la.

Cheers all +

    
por StephaneAG 09.12.2013 / 03:00
-4

Execute estes comandos em um terminal:

cd /lib/x86_64-linux-gnu/
sudo cp libudev.so.0.13.0 libudev.so.1

Isso me ajudou

    
por user214274 10.11.2013 / 07:03