“공유 객체 파일 libudev.so.0을 열 수 없습니다”오류를 어떻게 해결합니까?


81

우분투 64에서 Game Dev Tycoon 을 실행하려고 합니다. 위의 객체를 요청합니다.

나는 달렸고 sudo apt-get install libudev1:i386이미 설치되어 돌아왔다.

나는 /lib/i386-linux-gnu/libudev.so.1아무 libudev.so.0데도 없다 .


1
민트에 Popcorntime의 새 버전을 설치 페트라 (16)을 시도 할 때 발생
igorsantos07

답변:


27

64 비트 Ubuntu의 경우 32 비트 libudev0 패키지에 있습니다.

다음 명령을 사용하여 설치할 수 있습니다.

sudo apt-get install libudev0:i386

이 패키지는 14.04에서 우분투에서 제거되었습니다. 이전 버전에서 설치해야합니다.


3
libudev0 : i386 어떤 아이디어를 찾을 때 패키지를 찾을 수 없습니까?
Jonathan

26
나는 sudo apt-get install libudev1 : i386을하고 sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong

google-webdesigner를 데비안 64 비트에 설치하려면이 명령을 입력해야했습니다
HoboBen

2
여기에서 이전 버전을 설치하십시오 : packages.ubuntu.com/precise/libudev0
rubo77

libudev0 패키지를 사용할 수 없지만 다른 패키지에서 참조합니다. 이는 패키지가 누락되었거나 폐기되었거나 다른 소스에서만 제공됨을 의미 할 수 있습니다.
Aaron Franke

199

해결하려면, 나는 연결 libudev.so.1libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0

25
sudo를 에선 -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0 : 64 비트
Pisu

10
이러지 마십시오. 문제를 요구할뿐입니다.
dobey

1
이것은 libxdev.so.0 symlink를 제거하고 libudev0 : i386을 다시 설치하기 위해 Plex Home Theater를 엉망으로 만들었습니다.
Johan Bjäreholt

2
32 비트에서 이것은 명령입니다 (누군가 여기에 도달 한 경우).sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena

6
dobey를 들어, 이것은 지저분한 절차입니다. Ryan Crichton은 여기에 올바른 방법을 게시했습니다 .
berbt

55

우분투 14.04 이상

내가 찾은 가장 쉬운 방법 은 .deb ( 64 비트 다운로드32 비트 다운로드에 대한 직접 링크)를 다운로드 하고 두 번 클릭하여 설치하거나 dpkg를 사용하여 설치하는 것입니다.

dpkg -i libudev0_175-0ubuntu9_amd64.deb

이전 버전

이전 버전의 우분투에서이 패키지는 공식 저장소에서 사용할 수있었습니다. 다음과 같이 설치할 수 있습니다.

sudo apt-get install libudev0:i386

17
이것이 바로 정답 입니다. 패키지가 없으면 패키지를 설치합니다 ... 간단합니다. 링크 생성, 16 진 편집 이름, Chrome 재구성, CPU 해머 및 코코아 가루 제거는 실제 솔루션이 아닙니다.
berbt

2
그러나 해당 패키지가 사용 가능한 경우에만 작동합니다.
Tamsyn Michael

1
@TamsynMichael 저장소에서 패키지를 사용할 필요는 없습니다. 위 링크에서 패키지를 다운로드 한 다음 공식 저장소에서 패키지를 사용할 수없는 우분투 버전에 수동으로 설치할 수 있습니다.
Ryan Crichton

이것이 정답입니다! 이 적절한 수정, 아니 지저분한 심볼릭 링크 또는 무엇이든지이다
주 - 랄프 - 아돌프

이것이 내가 찾을 수있는 가장 쉬운 방법입니다. 저장소에 이전 의존성을 추가하는 것은 고통입니다
denny

32

다른 프로그램에 대해 같은 문제가 있었지만 Sean의 대답은 전혀 도움이되지 않았습니다. 업그레이드 된 64 비트 13.04 설치에서 libudev0은 64 비트 또는 i386 형식으로 사용할 수 없습니다. ia32-libs는 이미 설치되어 있습니다. 주사위가 없습니다.

내가해야했던 것은 약간 수정 된 버전 senshikaze의보다 기술적 인 솔루션이었습니다. x86_64 lib 디렉토리의 libudev.so.0을 libudev.so.1에 수동으로 심볼릭 링크했습니다.

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

이것은 나를 위해 그것을 고쳤다.


이로 인해 우분투 15.04 64 비트를 실행하여 나를 위해 고쳤습니다. 무리 감사.
Tamsyn Michael

우분투 19.04에서 수정
Alexander Haroldo da Rocha

5

이 오류는 Node Webkit 에서 nw 실행 파일 을 사용하려고 할 때 발생할 수 있습니다 . 이처럼 :

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

해결 방법 :

  1. 예를 들어 바이너리의 ASCII 문자열을 변경할 수있는 16 진 편집기를 가져옵니다. hexedit :

    • 터미널 ( Ctrl+ Alt+ T)에서 다음을 실행하십시오 sudo apt-get install hexedit..
    • 터미널에 제시된 지침을 따르십시오 (필요한 경우 암호를 입력하고 설치를 확인하십시오).
  2. 노드 웹킷 이있는 디렉토리로 이동 하십시오 .
    • 제 경우에는 : cd ~/Dokumenty/node-webkit-*.
  3. 다음 과 같이 16 진 편집기 명령을 사용하여 nw 바이너리를여십시오 sudo.
    • 다음을 실행하십시오 sudo hexedit nw.
  4. libudev.so.0ASCII 문자열로 검색하십시오 .
    • hexedit를 사용하는 경우 :을 누릅니다 Tab.
    • Ctrl+를 누릅니다 S.
    • 유형 : libudev.so.0.
  5. 변경 0libudev.so.0문자열하는 1이,가되도록 : libudev.so.1:
    • 화살표 키를 사용 0하여 libudev.so.0문자열 을 선택하십시오 .
    • 1키보드를 누릅니다 .
  6. 종료하고 변경 사항을 저장하십시오.
    • Ctrl+를 누릅니다 X.
    • Y변경 사항을 저장하려면 누릅니다 .

끝났습니다. 또한 nw 대신 16 진 편집 Atraci 파일을 제외하고 동일한 지침을 따를 때 Atraci 바이너리 문제를 해결합니다.


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nw그러면 아무것도 설치할 필요가 없습니다
Catalyst

4

우분투 14.04에서 작동하는 유일한 대답은 받아 들여진 대답이며, 많은 의견에서 이것이 길 아래의 시스템에 문제를 일으킬 수 있다고 지적합니다. 이 스크립트는 터미널에서 루트 암호를 입력하라는 메시지를 표시합니다. 심볼릭 링크를 만들고 응용 프로그램을 시작합니다 (제 경우에는 팝콘 시간). 응용 프로그램을 종료하면 기존 sudo 세션을 사용하여 심볼릭 링크를 제거합니다.

#!/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

LD_LIBRARY 환경 변수를 대신 사용할 수있는 방법이 있는지 궁금하지만이 아이디어가 마음에 듭니다.
Flimm

@Flimm, 어떻게하는지 알려주세요.
TenLeftFingers

1
나는 이 대답을 대신 사용했다.
Flimm

4

방금이 작업을 수행 할 수있는 방법을 찾았습니다.

시스템에 Chrome이 설치되어 있고 Chrome에이 공유 객체가 내장되어 있습니다. 그래서 Chrome 설치 디렉토리의 라이브러리에 심볼릭 링크를 만들어야했습니다.

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

그것은 나를 위해 꽤 잘 작동합니다.


4

이것은 내가 찾은 가장 간단한 해결책이었습니다.

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

2

필 강한 지적

설치 libudev.so.1

sudo apt-get install libudev1:i386

그런 다음 libudev.so.0

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

1

나는 14.04에 이것을했지만 비슷해야합니다. 패키지를 삭제하고 다시 설치하십시오. 올바른 라이브러리가 적절하게 설치되었습니다.

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

다른 답변이 작동한다고 확신하지만 구성 관리 패키지로 관리되는 파일 시스템 객체를 수정하는 데 기본적인 내용이 있습니다.


1

이것이 32 비트 Ubuntu 15.04에서 동일한 문제를 해결하는 데 사용한 것입니다.

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

0

업데이트 실행하려는 프로그램을 래핑하기 위해 bash 스크립트를 만들었습니다. 로컬 bin 폴더에 추가하고 셸 스크립트를 복사하여 붙여 넣거나 실행하지 않고도 프로그램을 시작할 수 있습니다.

#!/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 

OLD ANSWER Ubuntu 14.04에서 Live Preview (Chromium)를 사용하려고 할 때 Dart Editor에서 오류 메시지가 표시되었습니다. libudev1 을 설치 하고 심볼릭 링크를 작성하여 오류를 해결했습니다 .

    sudo apt-get install libudev1

또한 TenLeftFingers가 위에서 언급 한 스크립트를 사용하여 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

Dart Editor가 실행되지 않으면 JAVA가 설치되어 있고 권한 문제가 아닌지 확인하십시오.

    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

IDE를 실행 가능하게 만듭니다.

    sudo chmod a+x ./DartEditor

이것은 나를 위해 일했습니다.


0

Xubuntu Precise에서 Trusty로 업그레이드 한 후 32 비트 시스템에서 동일한 오류가 발생했습니다. 이것은 나를 위해 그것을 고쳤다 :

sudo dpkg-reconfigure google-chrome-stable

여기 에서 찾았습니다 . 절대적으로 매개 변수가 없으면 이것이 어떻게 수정되었는지 확실하지 않지만 그랬습니다. 내가 가장 좋아하는 것은 앞으로 나에게 잠재적으로 문제를 일으킬 수있는 일을 할 필요가 없으며 패키지를 찾아 낼 필요가 없다는 것입니다.


-1

libudev.so.0 및 Ubuntu의 Emotiv Epoc SDK Dev Edition에서 수정 사항을 웹에서 파는 동안이 페이지를 우연히 발견하면 다음이 도움이되기를 바랍니다.

// 내 구성은 64 비트 Ubuntu 13.04입니다.

64 비트 시스템의 경우 :

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

"공유 라이브러리로드 중 오류 : libudev.so.0 : 잘못된 ELF 클래스 : ELFCLASS32"

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

32 비트 시스템의 경우 :

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

"공유 라이브러리를로드하는 동안 오류 : libudev.so.0 : 잘못된 ELF 클래스 : ELFCLASS64"를 막을 수있는 것 (추측, 64 비트 시스템에 있음)

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

위의 작업을 수행 한 후 EmotivControlPanel, EmoKey, EmoComposer, Java 예제 및 거의 사용자 정의 된 Qt 예제를 실행할 수 있어야합니다 (이미 위의 모든 단계를 시도했지만 웹에서 찾은 다른 단계 (스택 오버플로, ..)는 작동하지 않았습니다. 나를 위해, 그래서 그것은 "시도 및 오류"후에 일을 결국

마지막으로, 여기에 누군가가 64 비트 시스템에서 32 비트 라이브러리에 대해 컴파일 된 프로그램을 실행하는 방법을 알고 있다면 제공된 3rd Party 32 비트 라이브러리를 사용하는 동안?

더 정확하게 말하면, 내가 말하는 것을 알고있는 사람들을 위해 64 비트 시스템에서 "EmoCube"및 "BlueAvatar"Qt 예제를 어떻게 실행해야합니까?

-> 지금까지 시도한 결과, "공유 라이브러리를로드하는 동안 오류가 발생했습니다 : libedk.so.1 : 잘못된 ELF 클래스 : ELFCLASS64"

나는 i386 디렉토리에있는 그 lib에 대한 심볼릭 링크가 그것을 만들지 않을 것이라고 생각한다. (아직 시도하지는 않았지만) 누군가 대답이 있다면 ... 나는 그것을 기대하고있다.

건배 +


-4

터미널에서 다음 명령을 실행하십시오.

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

이것은 나를 도왔다


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.