리눅스 elf 파일이 실행이 안될때

declspec의 이미지

root@declspec-desktop:~# file 242
242: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
root@declspec-desktop:~# ./242
bash: ./242: No such file or directory
root@declspec-desktop:~# ls -al 242
-rwxrwxrwx 1 root root 5163 2012-07-28 02:59 242
root@declspec-desktop:~#

242 라는 ELF 파일이 있습니다
권한을 777 을 주고 루트로 실행하려는데도 실행이 안됩니다
bash: ./242: No such file or directory
이거만 나오네요...

어떻게 된걸까요?, 참고로 다른 서버에서는 잘 실행되던 파일입니다
gdb 로 열고 disassemble 도 되는데 gdb 상에서도 실행시키면
bash: ./242: No such file or directory
이게 뜨네요

원인이 뭘까요?

익명 사용자의 이미지

shared lib이 없는 건 아닌가요

oosap의 이미지

readelf 로 .interp 섹션에 나와있을 동적링커가 시스템에 있는지 확인해보세요..

Thanks for being one of those who care for people and mankind.
I'd like to be one of those as well.

declspec의 이미지

감사합니다!

readelf -l ./242

하니까 INTERP 부분에 대해서
ld-linux.so.0 을 요구하는거같네요
그런데 ld-linux.so.2 만 있어서
안됬던거같네요

자세하게 뭐가 어떻게되는건지 아직 잘 모르겠지만
일단 실마리는 잡은거같습니다~

자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.

나그네나그네의 이미지

시스템이 64bit인데 32bit 프로그램을 실행시키면 가끔씩 안되는 경우가 있더군요

planetarium의 이미지

ldd ./242 해서 필요한 라이브러리 다 있는지 확인해보시면 뭔가 없을겁니다.
윗분들 말씀도 결국 이것과 같은 내용입니다.

declspec의 이미지

ldd ./242

linux-gate.so.1 => (0x007af000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x005a9000)
/lib/ld-linux.so.0 => /lib/ld-linux.so.2 (0x00ed0000)

이렇게 되는데 없는건 없는거아닌가요?
오직 libc 만 쓰는거같은데..

그리고 같은 바이너리를 또 다른 서버에서도 실행해도 안되서(오리지날 서버에서만 실행됨)
거기서도 ldd 해보니

/usr/bin/ldd: line 1: ./242: No such file or directory

여긴또 이렇게 나오네요... ㅠㅠ

자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.

ymir의 이미지

먼저 두 서버의 파일이 동일한지 cksum 이나 sha1sum 으로 체크해 보세요.
어떻게 복사하셨는지 모르겠지만, 혹시 ftp 로 복사하면서 ascii 모드로 전송한 건 아닌지 확인해 보시구요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』