2016-11-07 1 views
3

나는 리눅스에서 "바이너리"파일을, 특정 작업을 위해 윈도우에서는 별도의 파일을 받았다. 프로그램은 창문에 exe입니다. 리눅스 버전의 파일은 창과 마찬가지로 리눅스에서도 동일한 기능을합니다.우분투에서 확장 기능 (ELF) 파일을 어떻게 실행합니까?

그러나 저는 이것을 실행할 수 없었습니다. 나는 (터미널에서) 단지 파일 이름 ./[filename]으로 그것을 실행하려고 시도했고 심지어 chmod +x [filename]을 시도한 다음 두 번째 방법을 시도했다.

모든 것에 대해 ... 결과가 나타납니다 : "명령을 찾을 수 없습니다". (파일은 분명히 있습니다.).

내가 어떻게해야합니까? 그 파일 명령은 다음과 같습니다.

ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=e805f746e65c09cc8b0c037d8a8c27ee0a6a051c 
+0

Linux에서 Windows 용으로 사용한 것과 동일한 실행 파일을 실행할 가능성이 있습니까? – Inian

+0

아니요, 선생님 ... 전 확실히 아니에요! – hexcode

+1

파일 명령을 사용하면 다음과 같습니다. ELF 32 비트 LSB 실행 파일, Intel 80386, 버전 1 (SYSV) 동적 링크, 인터프리터 /lib/ld-linux.so.2, GNU/Linux 2.6.32, BuildID [ sha1] = e805f746e65c09cc8b0c037d8a8c27ee0a6a051c, 벗겨 내기 – hexcode

답변

4

내 생각에 64 비트 시스템에서 32 비트 컴파일입니다. gcc에서 -m32 옵션을 사용하여 작은 C 파일을 바이너리로 컴파일했습니다. 이것도 약간의 추가 패키지가 필요했습니다. 결과는 a.out입니다.

% file a.out 
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=be02470c8337b96e7deaaff323bc53865991c3ab, not stripped 

a.out이 날이를 보여줍니다 실행

% file /bin/ls 
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=a0823e17cafbe5b2296346216445566840fdfd88, stripped 

이진 기본 시스템이 비교.

% ./a.out 
zsh: no such file or directory: ./a.out 

특정 "명령을 찾을 수 없습니다."라는 메시지는 bash가 인쇄 한 것입니다. 나는 zsh를 직접 사용한다.

이 기능을 사용하려면 multilib 패키지를 설치할 수 있습니다. 정확한 패키지로 좁히지는 않았지만 데비안에 gcc-multilib을 설치하면 필요한 모든 것을 얻을 수 있습니다. 설치 한 후, 여기에 내가 얻은 것이있다.

% ./a.out 
3.140523 

(프로그램은 PI 값을 추정한다고 가정 함).

참고 : 실제로 파일을 컴파일하기 위해 gcc-multilib을 설치해야했습니다. 필자는 필요로하는 32 비트 런타임 라이브러리가없는 64 비트 시스템을 모방하기 위해 패키지를 제거했습니다.

관련 문제