32 비트 Ubuntu 시스템에서 64 비트 앱 실행


10

내가 본 모든 질문은 64 비트 시스템에서 32 비트 앱을 실행하는 것과 관련이 있습니다.

32 비트 Ubuntu 12.04 (실제로 기초적인 OS Luna)를 실행 중이며 64 비트 응용 프로그램을 실행하려고합니다. 달리는:

./64bit_app.run

( 64bit_app.run내가 실행하려고하는 64 비트 응용 프로그램은 어디에 있습니까 ) 결과는 다음과 같습니다.

bash: ./64bit_app.run: no se puede ejecutar el fichero binario

" 이진 파일을 실행 / 실행 / 열 수 없음 "으로 번역됩니다 .

실행할 수 있어야합니까? 32 비트 시스템에서 64 비트 앱을 실행할 수 있습니까? 그렇다면 어떻게?


나는 이것을 시도 하지 않았지만 여기 에 제시된 해결책을 시도해 보았 dpkg --add-architecture습니까? 내가 아는 한 64에서 32와 64에서 32에 대해 동일한 접근 방식이 작동해야 dpkg --add-architecture i386합니다 dpkg --add-architecture amd64.로 변경 하십시오 .
terdon

1
당신은 권리, 64 비트 하드웨어가? (확인하기 위해)
2

"개방을 거부하는"? 정확히 어떻게?
Braiam

1
연결된 질문에 대한 답변을 읽으십시오 sudo dpkg --add-architecture amd64. 먼저 실행해야합니다 . 그것은 별도의 명령입니다.
terdon

1
@terdon 죄송합니다, 나는 그것을 이해하지 못했습니다. 해당 줄을 실행하면 결과는 dpkg: error: opción --add-architecture desconocidadesconocida변환됩니다 unknown.
Gabriel

답변:


8

32 비트 커널이있는 x86_64의 Linux에서는 직접 그렇게 할 수 없습니다. 64 비트 코드를 실행하려면 64 비트 커널이 필요합니다. (참고 : 커널. 64 비트 커널에서 32 비트 사용자 영역을 실행하고 64 비트 바이너리를 지원할 수 있습니다. 배포 방법에 따라 다릅니다. 데비안의 경우 여기 에 있습니다.)

일부 가상화 소프트웨어는 (사용중인 CPU 유형에 제한이 있음) 그렇게 할 수 있으며 에뮬레이터도 그렇게 할 수 있습니다. 그러나 기본적으로 실행하려면 64 비트 커널이 필요합니다.

대부분의 64 비트 배포판에는 32 비트 지원 (기본적으로 또는 설치 가능)이 있으므로 동일한 OS에서 64 비트 및 32 비트 바이너리를 모두 실행해야하는 경우에 사용해야합니다.


7

@Mat의 답변 확장 :

예, 일부 가상화 소프트웨어가이를 수행 할 수 있습니다. 처리해야 할 주요 장애물은 32 비트 환경에서 CPU의 64 비트 기능을 사용할 수없고 64 비트 커널의 기능도 사용할 수 없다는 것입니다. CPU 64 비트를 지원 한다면 (2003 년경부터 모두 지원합니다).

귀하의 질문은 암시 적으로 자신의 시스템 환경에서 64 비트 앱을 실행하고 싶다고 말합니다. 실제로 의도 한 경우 모든 가상 머신 기반 솔루션이 제외됩니다. 나에게 알려진 유일한 것은 qemu의 커널 에뮬레이션입니다. 그래서:

qemu-x86_64 ./your_64bit_app

현재 환경 변수와 함께 현재 커널과 함께 현재 시스템에서 실행합니다 . 물론 그렇게 빠르지는 않지만 CPU를 에뮬레이트해야합니다.

Linux x86-64 앱만 에뮬레이트 할 수 있습니다.


어딘가에서 vmware가 그렇게 할 수있는 것처럼 읽었지만 어쨌든 대답을위한 충분한 정보는 아닙니다. Afaik 최근 vmware는 호스트 측에서 64 비트 전용입니다.
peterh-복 직원 모니카

1

대부분의 64 비트 아키텍처는 32 비트 아키텍처의 확장입니다. 그것들은 새롭고 완전히 다르므로 분명히 32 비트 아키텍처는 64 비트 대응이 무엇인지 전혀 모릅니다. 그들은 새로운 기능이 무엇인지, 새로운 레지스터가 무엇인지 모릅니다. 그들이 알고 있더라도 새로운 레지스터와 기능에 액세스 할 수 없습니다. 결과적으로 32 비트 커널은 64 비트 컨텍스트를 저장할 수 없습니다. 이 모든 것 때문에 32 비트 시스템에서 64 비트 앱을 실행할 수 없습니다.

신중하게 조작 된 64 비트 인식 32 비트 커널 은 64 비트 앱을 실행할 수 있지만 컨텍스트 절약을 위해 64 비트 코드가 여전히 필요하므로 더 이상 순수한 32 비트 커널이 아닙니다.

에뮬레이터 내에서 64 비트 OS를 실행하거나 VT-x를 사용하여 32 비트 호스트 내에서 64 비트 게스트 가상 머신을 실행할 수 있습니다. 그러나 기술적으로는 다른 64 비트 시스템에서 실행 중입니다. 32 비트 Linux 커널에서 직접 64 비트 코드를 실행할 수는 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.