64비트 Ubuntu Oneric에서 32비트 실행 파일 실행

64비트 Ubuntu Oneric에서 32비트 실행 파일 실행

64비트 Ubuntu에서 32비트 실행 파일을 실행하려고 합니다. 다음은 상황에 대한 간략한 개요입니다. 하지만 ia32 라이브러리가 설치되어 있어야 합니다.

> aptitude search ia32
i   ia32-libs - ia32 shared libraries for use on amd64 and ia64 syste

우선 파일 형식을 테스트했습니다.

> file tipp10
tipp10: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, not stripped

아직 다시 시작하지 않았기 때문에 최신 커널이 아닌 64비트 Oneric을 사용하고 있습니다.

> uname -a
Linux christchurch 3.0.0-14-generic #23-Ubuntu SMP Mon Nov 21 20:28:43 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux

내가 말했듯이 정상적인 실행은 작동하지 않습니다. 파일이나 디렉터리를 찾을 수 없으면 중단됩니다.

> strace ./tipp10
execve("./tipp10", ["./tipp10"], [/* 46 vars */]) = -1 ENOENT (No such file or directory)
dup(2)                                  = 3
fcntl(3, F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 2), ...}) = 0
[...]

내 시스템의 ldd 출력은 다음과 같습니다. 내 64비트 데비안 서버에서 프로그램은 동적 링크 프로그램으로 재구성되었으며 출력에서 ​​몇 가지 lib 참조를 볼 수 있습니다. 하지만 내 우분투에서는:

> ldd tipp10
    \tdas Programm ist nicht dynamisch gelinkt
# german for: "The programm is not linked dynamic"

나는 무슨 일이 일어나고 있는지 이해하지 못합니다.

답변1

libc6-i386이 올바르게 설치되었는지 확인하십시오. ENOENTfrom은 execve동적 링커가 누락되었음을 나타냅니다.

관련 정보