공식 apt-get 저장소를 사용할 때는 이런 일이 발생해서는 안 되지만, 인터넷에서 소프트웨어를 다운로드하여 실행하면 두려운 bash:./nameOfProgram:can run bin bin file:Exec 형식 오류가 표시될 가능성이 있습니다. . 이 오류는 일반적으로 bash:./nameOfProgram.sh:Permission allowed가 뒤따릅니다. 또는 이와 유사한 오류는 Ubuntu가 다운로드한 바이너리와 올바르게 인터페이스할 수 없음을 나타냅니다. 이는 유효한 Linux 바이너리인 것처럼 보이지만 현재 커널이 지원하는 것과 다른 칩셋용으로 설계되었기 때문입니다.
Ubuntu를 사용하는 대부분의 사람들은 실제로 마이크로칩을 만든 사람이 누구인지에 관계없이 Intel이 출시한 표준 아키텍처를 기반으로 하는 32비트 또는 64비트 프로세서를 사용하고 있습니다. 64비트 프로세서는 32비트 모드에서 실행될 수 있다는 점을 기억하는 것이 중요합니다. 따라서 64비트 프로세서를 사용하는데도 이 오류가 발생한다면 32비트 버전의 Ubuntu를 실행하고 있을 가능성이 있습니다. 몇 가지 간단한 명령만 있으면 칩이 어떻게 작동하는지 알 수 있습니다.
방법 1:arch 명령 사용
컴퓨터에 설치한 마이크로프로세서 유형에 익숙하지 않은 경우 먼저 명령줄에서 arch 명령을 사용하는 것이 좋습니다. 이 명령을 실행한 후에는 한 줄의 출력만 표시됩니다. 대부분의 경우 i686이 표시됩니다. 이는 32비트 프로세서를 사용하고 있으므로 x86_64 바이너리를 실행할 수 없음을 의미합니다. 대신 amd64 또는 이와 유사한 것이 표시된다면 x86_64 프로세서를 사용하고 있으며 최소한 이론적으로는 대부분의 32비트 및 64비트 바이너리를 실행할 수 있어야 합니다. Microsoft Windows와 달리 Ubuntu Linux에는 실제로 644비트 칩셋 사용자가 운영 체제에서 16비트 Windows 프로그램을 실행할 수 있는 적절한 도구가 포함되어 있는 경우가 많습니다.
이 용어는 특정 마이크로칩 모델을 실제로 사용하지 않더라도 여전히 적용됩니다. 예를 들어, i686은 Linux가 실제로 Intel 80686 칩이 아니더라도 많은 32비트 프로세서를 참조하는 방식입니다. 64비트 Intel 기술을 사용하더라도 Arch는 여전히 프로세서를 amd64 칩이라고 부를 수 있습니다. 이는 오류를 나타내지 않으므로 무시해도 됩니다. cat /proc/cpuinfo를 사용할 수 있습니다. 이상의 /proc/cpuinfo 사용 중인 프로세서의 정확한 유형을 알아보세요. 이 파일의 줄이 길기 때문에 그래픽 터미널 창을 사용하는 경우 실행하기 전에 F11을 누르는 것이 좋습니다. 가상 콘솔 사용자, 특히 Ubuntu 서버를 사용하는 사용자는 크게 걱정할 필요가 없습니다.
다른 유형의 출력이 표시될 수 있으며 이로 인해 소프트웨어 실행 시 옵션이 더욱 제한될 수 있습니다. Ubuntu는 PowerPC 아키텍처를 가장 오랫동안 지원했는데, 이는 일부 워크스테이션은 물론 많은 Classic Macintosh 및 구형 OS X Macintosh 시스템에서도 볼 수 있습니다. 오늘날에는 거의 지원을 받지 못하지만 실제로 이러한 아키텍처에 대한 Ubuntu 리포지토리를 찾을 수 있습니다. 그러나 이 경우 공식 저장소 외부에서 인터넷에서 다운로드한 많은 Linux 바이너리를 실행할 수 없을 가능성이 높습니다. 그렇다고 해서 Ubuntu가 이러한 시스템에서 작동하지 않는다는 의미는 아니지만 더 가벼운 Lubuntu 배포판을 살펴보는 것이 좋습니다.
방법 2:파일 명령 사용
file 명령은 다양한 파일에 포함된 내용을 식별하며 일반적으로 매우 정확합니다. nameOfProgram 파일을 입력하여 문제의 파일을 식별해 보세요. ELF 32비트 또는 ELF 64비트가 출력되는지 확인하세요. ELF 64비트 바이너리라고 말하고 Arch 명령의 출력으로 i686을 받았다면 컴퓨터에서 합리적으로 실행할 수 있는 방법이 없습니다. 32비트 Ubuntu를 실행하는 64비트 마이크로프로세서를 사용하는 경우 기술적으로 운영 체제를 다시 설치할 수 있지만 이는 단일 프로그램을 실행하기 위한 다소 극단적인 단계입니다.
또한 실행을 시도할 때 맬웨어 검사를 실행했음에도 불구하고 터미널에 정크 문자를 뿜어내는 바이너리를 대신 발견할 수도 있는 매우 실제적인 가능성도 있습니다. 이러한 문자는 일반적으로 마름모 모양의 블록 형태이거나 숫자 값이 들어 있는 직사각형 큐브 형태를 취합니다. 일부 컴퓨터 과학자는 후자를 두부라고 부르며 현재 설치된 서체에서 표시할 수 없는 문자의 유니코드 값을 나타냅니다. 터미널에 이와 같이 표시되면 글꼴 오류도 아니고 악성 코드와 관련된 것도 아니니 안심하셔도 됩니다. 오히려 이는 바이너리 내부의 컴파일된 마이크로프로세서 opcode가 시스템에 너무 이질적이어서 일부 코드를 해석하는 방법을 모르기 때문입니다.
이 문제를 해결하는 가장 좋은 방법은 아키텍처에 적합한 패키지를 설치하는 것입니다. Ubuntu 내부에서 패키지를 설치하는 경우 apt-get 시스템이나 그래픽 Synaptic 관리자를 사용하면 문제 없이 해결할 수 있습니다. 다른 배포판에서 패키지를 다운로드하는 경우 아키텍처에 적합한 패키지를 찾아야 합니다. 예를 들어 Arch Linux의 gvim 패키지 목록을 살펴보겠습니다. 기본 패키지에는 x86_64 아키텍처가 포함되어 있지만 i686 칩셋용 패키지도 있습니다. 이것은 Intel 인터럽트 구조와 함께 작동하는 32비트 시스템에서 작동하지만 Linux가 지원하는 다른 칩셋은 실제로 자체 32비트 구현 기능을 제공하므로 i686과 32비트라는 용어가 항상 상호 포괄적인 것은 아니라는 점을 기억하십시오.
전체 GNU/Linux 장면을 탐색하는 사용자는 이보다 훨씬 더 이국적인 기술을 위해 컴파일된 바이너리를 발견할 수 있습니다. Linux는 진정한 크로스 플랫폼 코드이므로 OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha 및 기타 여러 표준 바이너리가 함께 작동하도록 컴파일되는 것을 볼 수 있습니다. ARM은 매우 인기 있는 태블릿 및 스마트폰 플랫폼이지만 아마도 이들 중 어떤 것도 실행할 수 없을 것입니다. 이는 Raspberry Pi의 기반이 되는 플랫폼이기도 합니다. 즉, 실제로 모바일 장치에서 Ubuntu를 실행하거나 Raspberry Pi용 Ubuntu MATE 배포판을 실행하는 경우 Intel 32비트 또는 x86_64 바이너리 대신 실제로 이러한 플랫폼이 필요합니다.
저자 소개
케빈 애로우
Kevin Arrows는 10년 이상의 업계 경험을 보유한 경험이 풍부하고 지식이 풍부한 기술 전문가입니다. 그는 MCTS(Microsoft Certified Technology Specialist) 인증을 보유하고 있으며 최신 기술 개발에 대한 최신 정보를 얻으려는 깊은 열정을 가지고 있습니다. Kevin은 소프트웨어 개발, 사이버 보안, 클라우드 컴퓨팅과 같은 분야에서 자신의 전문 지식과 지식을 보여주면서 광범위한 기술 관련 주제에 대해 광범위하게 글을 썼습니다. 기술 분야에 대한 그의 공헌은 동료들로부터 널리 인정받고 존경받고 있으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 높은 평가를 받고 있습니다.