해결 방법 : -bash : : 이진 파일을 실행할 수 없습니다


18

어셈블리 언어가 포함 된 b1이라는 파일이 있습니다. OSX에서 다음을 사용하여 파일을 실행하려고합니다.

$ ./b1

다음과 같은 오류가 발생합니다.

-bash: ./b1: cannot execute binary file

다른 유사한 질문을 보았지만 아무 소용이 없습니다. 나는 확실히 64 비트 아키텍처를 사용하고 있습니다.

다음은 관련 정보의 출력입니다.

$ file b1
b1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped
$ uname -a
Darwin Anthonys-MacBook-Pro.local 13.0.0 Darwin Kernel Version 13.0.0: Thu Sep 19 22:22:27 PDT 2013; root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64

편집하다:

as b1결국 다음과 같이 끝나는 Ran : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/as: fatal error in /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../libexec/as/x86_64/as

답변:


25

죄송합니다.이 파일은 GNU / Linux 용입니다.

file출력 에 따르면 이 프로그램은 GNU / Linux 용입니다. 나는 이것을 알고 있습니다 :

  1. 파일 b1ELF(확장 가능하고 링크 가능한 형식) 형식이며 Mac OS X은 Mach-O이진 형식을 사용합니다 .
  2. file이 파일이 용임을 인식 GNU/Linux 2.6.18하여 대부분의 최신 Linux 배포판에서 작동합니다.

문제를 해결하려면 Linux 배포판에서이 문제를 실행하거나 프로그램을 다시 컴파일하거나이 프로그램의 Mac OS X 버전을 가져와야합니다.

그렇다면 ... 왜 XYZ OS 또는 CPU b1에서 작동 하지 않습니까?

사람들이 다른 언어를 사용하는 것처럼 컴퓨터마다 다른 지침을 이해합니다. 예를 들어, Mac은 Intel 프로세서를 사용하고 Android 전화는 ARM 프로세서를 사용합니다. 이 두 프로세서를 영어와 프랑스어와 비교하십시오. 그들은 같은 언어 가족에 속할 수도 있지만, 동시에 둘 다 말할 수는 없습니다. 결론은 다음과 같습니다.

다른 컴퓨터는 다른 언어로 "말"합니다.

다른 운영 체제 (예 : Windows, Mac OS X 및 Linux)가 동일한 바이너리를 사용할 수없는 이유는 다음과 같습니다.

소프트웨어가 객관적으로 하드웨어와 다른 점은 무엇입니까? 별로.

둘 다 시스템과 "언어"를 제공하여 컴퓨터의보다 복잡한 구성 요소가 최종 사용자를위한 작업을 완료 할 수 있도록합니다. 둘 다 작업을 완료하려면 동의 한 언어가 필요합니다. 한 사람이 서로 다른 언어를 사용하는 외침 매치에 10 명이 있다고 상상해보십시오. 이것이 두 운영 체제가 동일한 프로세서를 사용하더라도 OS 소프트웨어마다 다른 바이너리가 필요한 이유입니다.


안녕하세요, Mac OS 10.9에서 elf 파일을 컴파일하는 데 비슷한 문제가 있습니다. 이 onmac 실행하는 방법을 말해 줄래
AllIsWell

AllsWell 당신이 방법을 찾았습니다!?
Neocortex

1

어셈블리어? 컴파일하거나 조립해야합니다.

man as

2
질문자는 어셈블리 언어기계어 코드를 혼동 한 것 같습니다 . file질문 의 결과를 참조하십시오 .
JdeBP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.