"-sh: 바이너리를 실행할 수 없습니다." 소스 코드가 "x86_64"에서 컴파일되고 "i686" 플랫폼에서 실행되었기 때문에 발생합니다.

"-sh: 바이너리를 실행할 수 없습니다." 소스 코드가 "x86_64"에서 컴파일되고 "i686" 플랫폼에서 실행되었기 때문에 발생합니다.

일부 USB NCM 관련 테스트 사례를 실행해야 하며 일부 테스트 코드를 .c 파일에 작성했습니다. GCC 컴파일러를 사용하여 Ubuntu 호스트에서 .c 파일을 컴파일하고 장치 콘솔에서 실행을 시도했지만 "-sh: 바이너리를 실행할 수 없습니다" 오류가 발생했습니다. 장치 측에는 GCC가 설치되어 있지 않습니다.

uname -a 명령은 다음 o/p를 제공합니다.

> Host:

    4.4.0-31-generic Ubuntu x86_64

> Device:

    3.14.55-yocto-standard #1 SMP PREEMPT Fri Oct 12 13:34:50 CEST 2018 i686 GNU/Linux

나는 호스트와 장치 사이에 환경적 차이가 있다는 것을 이해합니다. 어쨌든 장치 측 콘솔에서 .c 파일을 컴파일하고 실행해야 합니다.

답변1

x86_64와 i686 명령어 세트는 다릅니다(자세한 내용은).

호스트 시스템에서 소스 코드를 컴파일하려면 다음 명령을 사용하십시오.

 gcc -m32 -mtune=i686 source.c -o source  

이와 같은 오류가 발생하면 fatal error: *.h : No such file or directory적합한 크로스 컴파일 라이브러리가 없다는 의미입니다.

 sudo apt install g++-multilib

gcc 명령을 다시 실행하십시오.

인용하다:

GCC 매뉴얼 페이지

관련 정보