
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이 올바르게 설치되었는지 확인하십시오. ENOENT
from은 execve
동적 링커가 누락되었음을 나타냅니다.