AOSP 5.1.1(Nexus 7 - Grouper)에서 특별히 ROM을 빌드하려고 합니다. 그런데 얼마전 커널을 빌드하다가 이 부분에서 막혔습니다.
다음 명령은 잘 작동합니다. make tegra3_android_defconfig
작성할 때 문제가 시작됩니다.make -j4
충돌이 발생하고 다음과 같이 말합니다.
Fahads-MBP:tegra Fahad$ make -j4 /volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilds/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc:/volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilds/ gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc: 바이너리를 실행할 수 없습니다. CHK 포함/linux/version.h CHK 포함/생성/utsrelease.h UPD 포함/생성/utsrelease.h HOSTCC 스크립트/기본/fixdep include/generated/mach-types.h 생성 CC 코어/바운드 /bin/sh: /volumes/untitled/tegra/../WORKING_DIRECTORY/prebuilds/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-gcc: 바이너리 파일을 실행할 수 없습니다. make[1]: *** [커널/바운드.s] 오류 126 make: *** [prepare0] 오류 2 #### make가 일부 대상을 빌드하지 못했습니다(2초) ####
나는 명령을 실행했다
chmod 777 ARM-eabi-gcc
그리고
chmod +x arm-eabi-gcc
그러나 여전히 작동하지 않았습니다. 동일한 바이너리 오류를 실행할 수 없습니다. 어떤 제안이 있으십니까?
답변1
"바이너리를 실행할 수 없습니다"는 권한과 관련이 없으므로 chmod
도움이 되지 않습니다.
(아, 절대 사용하지 마세요 chmod 777
. 이것은 절대 해결책이 아닙니다. 뭔가를 하려고 하는데 오류가 "Permission Denied"라면, 실행 권한을 추가하세요: chmod a+x
.)
이 메시지는 커널이 유효한 프로그램 형식으로 인식하지 못하는 바이너리 파일(스크립트가 아님)이 있음을 의미합니다. 디렉토리 이름에 따르면 linux-x86
이는 x86 실행 파일입니다.
힌트를 보면 ARM 태블릿 자체에서 커널을 빌드하려는 것처럼 보입니다. ARM 프로세서에서는 x86 실행 파일을 실행할 수 없습니다. Android 트리에는 존재하지 않는 ARM용 컴파일러 바이너리가 필요합니다. 가장 간단한 해결책은 PC에서 구축하는 것입니다. 정말로 태블릿에서 빌드하고 싶다면 적절한 컴파일러 바이너리를 구하십시오(올바른 libc의 경우 ARM 플랫폼에는 다양한 ABI가 있으므로 올바른 ABI를 식별하는 것이 약간 어려울 수 있습니다).