CentOS bad ELF interpreter 오류 해결



32비트 바이너리를 64비트 시스템에서 실행할 때 발생하는 오류입니다.



오류 메시지


/lib/ld-linux.so.2: bad ELF interpreter: 그런 파일이나 디렉터리가 없습니다


원인


64비트 CentOS에서 32비트 프로그램을 실행하려 할 때, 32비트 라이브러리가 설치되어 있지 않아서 발생합니다.



해결 방법


# 32비트 호환 라이브러리 설치
yum install ld-linux.so.2

# 또는 glibc 32비트 버전 설치
yum install glibc.i686

# CentOS 7 이상에서는
yum install glibc.i686 libstdc++.i686


추가 32비트 라이브러리 설치


# 일반적으로 필요한 32비트 라이브러리들
yum install libstdc++.i686
yum install zlib.i686
yum install ncurses-libs.i686
yum install libX11.i686
yum install libXrender.i686
yum install libXext.i686

# 한번에 설치
yum install glibc.i686 glibc-devel.i686 libstdc++.i686 zlib.i686


확인 방법


# 바이너리가 32비트인지 확인
file /path/to/binary

# 필요한 라이브러리 확인
ldd /path/to/binary

# 설치된 32비트 패키지 확인
rpm -qa | grep i686


주의사항



  • yum 대신 dnf 사용시: dnf install glibc.i686

  • Docker 컨테이너에서도 동일한 오류 발생 가능

  • Oracle Instant Client 같은 상용 SW에서 자주 발생