2013-02-10 3 views
0

나는 gcc-arm-linux-gnueabibinutils-arm-linux-gnueabi을 사용하고 gcc 대신 arm-linux-gnueabi-gcc을 사용하여 x86 기반의 Ubuntu 12.04 프로그램을 컴파일했다. 대상 아키텍처는 ARM이다. 오류나 경고없이 잘 컴파일됩니다.크로스 컴파일 바이너리가 존재하지 않습니까?

나는 ARM 시스템에서 실행하려고하면 (Pandaboard이 - 또한 우분투 12.04를 실행) 내가 얻을 :

bash: ./sttyl: No such file or directory 

나는 파일이 알고는 적절한 권한이 있습니다

-rwxrwxr-x 1 haziz haziz 8.5K Feb 10 10:34 sttyl 

file sttyl의 출력은 내가 아빠에 기본적으로 컴파일 할 때

sttyl: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31,BuildID[sha1]=0x6d504f7d84b93603122223a89e2b5960c840309f, not stripped 

입니다 그것을 컴파일하고 잘 실행 ndaboard.

sttyl: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31,BuildID[sha1]=0x9897c785266c5b7cdf580e08091aba239db84ecf, not stripped 

내가 잘못 뭐하는 거지 : 이것은 기본적으로 컴파일 된 사본에 file sttyl의 출력을 무엇입니까? 더욱이 크로스 컴파일에서 실수를했다면 쉘/커널이 실행 파일이 잘못된 아키텍처를위한 것이라는 것을 효과적으로 알리라고 기대했을 것입니다!

+0

동적 링커 또는 C 라이브러리에 문제가있을 수 있습니다. 'readelf -a your_program'을 시도하고 "프로그램 인터프리터 요청"을 찾으십시오. – Mat

답변

1

./sttyl이 존재하지 않는다고 말하지 않습니다.

오류가 No such file or directory으로 종료 된 새로운 프로세스가 생성되었음을 알려줍니다. 누락 된 파일 또는 디렉토리에 대한 정보는 제공되지 않습니다.

예를 들어, #!/bin/specialsh으로 시작하는 쉘 스크립트는 스크립트가 존재하여 실행 가능하더라도 인터프리터 /bin/specialsh이 누락되어 있으면 해당 오류를 생성 할 수 있습니다.

strace을 사용하여 오류를 유발 한 호출 (및 경로)을 찾으십시오.