[linux] CentOS 64 비트 잘못된 ELF 인터프리터

방금 CentOS 6 64 비트 버전을 설치했는데 64 비트 컴퓨터에 32 비트 응용 프로그램을 설치하려고하는데이 오류가 발생했습니다.

/lib/ld-linux.so.2 : 잘못된 ELF 인터프리터 : 해당 파일 또는 디렉토리가 없음

저는 리눅스를 처음 사용합니다. 이 문제를 어떻게 해결합니까?



답변

64 비트 시스템에 있고 32 비트 라이브러리 지원이 설치되어 있지 않습니다.

32 비트 실행 파일에 대한 설치 (기준) 지원

(설정에서 sudo를 사용하지 않으면 아래 참고 사항을 읽으십시오)

Fedora / Red Hat 제품군의 대부분의 데스크탑 Linux 시스템 :

 pkcon install glibc.i686

일부 데스크탑 데비안 / 우분투 시스템?

pkcon install ia32-libs

Fedora 또는 최신 Red Hat, CentOS :

 sudo dnf install glibc.i686

이전 RHEL, CentOS :

   sudo yum install glibc.i686

더 오래된 RHEL, CentOS :

  sudo yum install glibc.i386

데비안 또는 우분투 :

   sudo apt-get install ia32-libs

필요한 (첫 번째, 주요) 라이브러리를 가져와야합니다.

당신이 그것을 가지고 있다면, 아마 당신은 지원 라이브러리가 필요할 것입니다

다른 라이브러리 종속성 을 설치해야 할 수도 glibc.i686있고 glibc.i386아마도 실행할 수도 있습니다. 임의의 라이브러리를 제공하는 패키지를 식별하려면

 ldd /usr/bin/YOURAPPHERE

확실하지 않으면 /usr/bin다시 넘어갈 수 있습니다.

 ldd $(which YOURAPPNAME)

결과는 다음과 같습니다.

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

누락 된 라이브러리 (예 : libSM.so.6위 출력에서)를 확인하고 각 라이브러리 에 대해 제공하는 패키지를 찾아야합니다.

배포 제품군 당 패키지를 찾는 명령

페도라 / Red Hat Enterprise / CentOS :

 dnf provides /usr/lib/libSM.so.6

또는 이전 RHEL / CentOS에서 :

 yum provides /usr/lib/libSM.so.6

또는 데비안 / 우분투에서 :

먼저 데이터베이스를 설치하고 다운로드하십시오. apt-file

 sudo apt-get install apt-file && apt-file update

다음으로 검색

 apt-file find libSM.so.6

/usr/lib(보통) 경우 접두사 경로 를 유의하십시오 . 드물기는하지만 일부 라이브러리는 여전히 /lib역사적인 이유로 남아 있습니다. 일반적인 64 비트 시스템에서 32 비트 라이브러리는 /usr/lib64 비트 라이브러리에 /usr/lib64있습니다.

(데비안 / 우분투는 다중 아키텍처 라이브러리를 다르게 구성합니다.)

누락 된 라이브러리 용 패키지 설치

위는 패키지 이름을 알려줍니다. 예 :

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

이 예에서 패키지의 이름입니다 libSM패키지의 32 비트 버전의 이름입니다libSM.i686 .

그런 다음 pkconGUI를 사용하여 또는 필요한 경우 패키지를 설치하여 필수 라이브러리를 가져올 수 있습니다 sudo dnf/yum/apt-get. 예 pkcon install libSM.i686. 필요한 경우 버전을 완전히 지정할 수 있습니다. 예 sudo dnf install ibSM-1.2.0-2.fc15.i686.

일부 도서관은 이름 앞에“에포크 (epoch)”지정자가있을 것입니다. 이것은 생략 될 수있다 (호기심은 아래의 노트를 읽을 수있다).

노트

경고

근본적으로, 직면하고있는 문제는 RPM (Resp. DPkg / DSelect) 데이터베이스가 손상되었거나 실행하려는 응용 프로그램이 패키지 관리자를 통해 설치되지 않았 음을 의미합니다. Linux를 처음 사용하는 경우 가능하면 패키지 관리자 이외의 소스에서 소프트웨어를 사용하지 않는 것이 좋습니다.

설정에서 “스도”를 사용하지 않는 경우

유형

su -c

당신이 볼 때마다 sudo, 예를 들면,

su -c dnf install glibc.i686

라이브러리 이름의 시대 지정자 정보

이름 앞의 “에포크”지정자는 기본 RPM 라이브러리가 버전 번호를 처리하는 방식의 인공물입니다. 예 :

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3

여기서는 2:생략 할 수 있습니다. 그냥 pkcon install libpng.i686또는 sudo dnf install libpng-1.2.46-1.fc16.i686. (어쩌면 어느 시점에서 libpng패키지 의 버전 번호가 뒤로 구르고 업데이트 중에 최신 버전이 “최신”으로 간주되도록 “에포크”를 늘려야했습니다. .)


다양한 패키지 관리자 옵션을보다 명확하게 설명하기 위해 업데이트 되었습니다 (2016 년 3 월)


답변

새로 설치된 CentOS 6.4 64 비트 시스템에서 동일한 문제가 발생했습니다. 단일 yum 명령으로 비슷한 문제의 99 %를 더할 수 있습니다.

yum groupinstall “호환 라이브러리”

접두사 ‘sudo’를 접두사로 사용하거나 루트로 실행하십시오.


답변

일반적으로 이와 같은 오류가 발생하면

yum provides ld-linux.so.2

그러면 다음과 같은 것이 보일 것입니다 :

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

그런 다음 BRPocock이 쓴 것처럼 다음을 실행하십시오 (논리가 무엇인지 궁금한 경우 …).

yum install glibc.i686


답변

시험

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

이것이 해결되기를 바랍니다.


답변

BRPocock에 의견을 추가하고 싶었지만 충분한 권한이 없습니다.

그래서 저의 공헌은 IBM의 Integration Bus 번들에서 IBM Integration Toolkit을 설치하려는 모든 사람들을위한 것입니다.

/ Integration_Toolkit / IM_Linux 폴더 ( “실행 파일”은 “install”임)에서 “Installation Manager”명령을 실행하려고하면이 게시물에 오류가 표시됩니다.

이 문제점을 해결하기위한 추가 지시 사항은 다음 IBM 웹 페이지에서 찾을 수 있습니다.
https://www-304.ibm.com/support/docview.wss?uid=swg21459143

이것이 설치하려고하는 사람에게 도움이되기를 바랍니다.


답변

sudo yum 설치 fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++. so.6


답변

데비안에서는 시스템에 적어도 하나의 컴파일러가 필요합니다 ( Debian Stretch 및 Jessie 32 비트 라이브러리에 따라 ).

apt-get install -y gcc-multilibdebian : jessie를 기반으로 내 docker 컨테이너에서 32 비트 실행 파일을 실행하기 위해 설치 했습니다.