2010-02-08 5 views

답변

5

64 비트 바이너리는 32 비트 OS에서 실행할 수 없습니다. fileELF 64-bit이라고보고하면 64 비트 바이너리를 사용하게됩니다.

64 비트 Linux에서 32 비트 바이너리를 빌드하려면 gcc에 -m32을 전달해야합니다. 또한 32 비트 라이브러리 (sudo apt-get install libc6-dev-i386)가 설치되어 있어야합니다.

+0

guyz, 고맙습니다. –

+0

64 비트 프로세스는 32 비트 OS에서 64 비트 CPU로 잘 실행됩니다 (Mac OS X는 항상이 작업을 수행합니다 ...). Windows 나 Linux는 64 비트 바이너리를로드하지 않는 "기본"방법이 없지만 일부 영리한 magick을 사용하거나 CPU 모드를 수동으로 전환하는 등의 작업을 쉽게 수행 할 수 있습니다. 질문에 대한 일반적인 대답은 다음과 같습니다. 아직도 아니야". –

+0

Mac OS X은 Windows 및 Linux와 마찬가지로 "투명"32 비트 모드를 사용합니다. "수동 마법"이 필요하지 않습니다. Windows에는 자동으로 실행되는 32 비트 하위 시스템이 있으며 Linux에도 이와 유사한 메커니즘이 있습니다. 현대의 x86-64 프로세서는 이전의 32 비트 x86 아키텍처와 하위 호환이 가능하며 기본적으로 칩에 32 비트 x86을 포함하기 때문에 가능합니다. – JesperE

4

컴파일러는 중요하지 않습니다. 중요한 것은 코드가 32 비트 (대답 : 예) 또는 64 비트 (대답 : 아니오)로 생성되었는지 여부입니다.

+0

이해할 수 없습니다. 더 설명해 주시겠습니까? 파일 명령을 실행할 때 : GNU/Linux 2.6.18에 대해 giis-ext4 : ELF 64 비트 LSB 실행 파일, x86-64, 버전 1 (GNU/Linux), 동적 링크 (공유 라이브러리 사용) , 스트립되지 않음 64 비트에서만 실행할 수 있다는 의미입니까? 그렇다면 어떻게 64 비트 머신에서 32 비트 실행 파일을 만들 수 있습니까? [ –

+0

@lakshmipathi : GCC에 의해 생성 된 코드는 -m32 스위치를 사용하는 x86-64 (기본값은 64 비트 OS) 또는 x86입니다. JesperE의 대답을보십시오. –

+0

감사합니다 Ritsaert, 이제는 이해합니다. –

0

32 비트 컴퓨터에서 작동합니까? 하나의 CPU가 64 비트 모드를 지원하지 않습니까? No.

32 비트 네이티브 OS에서 64 비트 VM에서 작동합니까? 네, 제 경험으로 말입니다.

놀라운 결과는 CPU가 가능하고 게스트에 너무 많은 RAM (> 2G 또는 그 이상)을 할당하고 싶지 않다면 64 비트 VM을 32 비트 호스트 OS에서 실행할 수 있다는 것입니다.

+0

명확히하기 위해 64 비트 게스트 OS는 32 비트 호스트 OS에서 실행할 수 있지만 CPU가 64 비트 인 경우에만 실행할 수 있습니다. –

+0

64 비트 프로세스가 32 비트 OS에서 64 비트 CPU로 잘 실행됩니다 (Mac OS X는 항상이 작업을 수행합니다 ...). Windows는 64 비트 바이너리를로드하지 않는 "기본"방법이 없지만 일부 영리한 magick을 사용하거나 수동으로 CPU 모드를 전환하는 등의 작업을 쉽게 수행 할 수 있습니다. –

관련 문제