ubuntu 11.10 (32 비트 시스템) 에서 안 드 로 이 드 소스 코드 make 오류 해결 방법 을 컴 파일 합 니 다.
준비 작업 이 끝 난 후 컴 파일 작업 을 시작 하 다.다운로드 한 소스 코드 는 5G 가 많 습 니 다. 제 가 작성 한 대로 소스 코드 를 가 져 오 면 소스 디 렉 터 리 는 ~ / Andreid / source 입 니 다.
환경 설정
wayne@wayne-pc:~/Android/source$ source build/envsetup.sh
including device/htc/passion/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
wayne@wayne-pc:~/Android/source$ lunch full-eng
lunch 에서 permission denied 권한 이 부족 하 다 는 것 을 알 리 려 면 원본 루트 디 렉 터 리 에서 실행 하고 디 렉 터 리 에 모든 파일 권한 을 부여 해 야 합 니 다.
wayne@wayne-pc:~/Android/source$ sudo chmod -R 777 *
이 때 lunch 명령 은 다음 과 같은 문단 을 출력 합 니 다.
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.3
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRI40
============================================
컴 파일 시작
컴 파일 과정 에 많은 오류 가 발생 하여 중 지 될 수 있 습 니 다. 이 wayne 은 앞으로 참고 할 수 있 도록 모든 문제 와 해결 방법 을 일일이 붙 일 것 입 니 다.
1.Q:
wayne@wayne-pc:~/Android/source$ make -j2
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.3
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=GRI40
============================================
Checking build tools versions...
build/core/main.mk:76: ************************************************************
build/core/main.mk:77: You are attempting to build on a 32-bit system.
build/core/main.mk:78: Only 64-bit build environments are supported beyond froyo/2.2.
build/core/main.mk:79: ************************************************************
build/core/main.mk:80: *** stop。 。
해결 방법: cd 에서 원본 루트 디 렉 터 리 까지 실행:
$ gedit build/core/main.mk
찾아내다
ifneq (64,$(findstring 64,$(build_arch)))
수정 하 다
ifneq (i686,$(findstring i686,$(build_arch)))
그리고 다음 네 개의 make 파일 을 순서대로 수정 합 니 다.
external/clearsilver/cgi/Android.mk
external/clearsilver/java-jni/Android.mk
external/clearsilver/util/Android.mk
external/clearsilver/cs/Android.mk
그 중의
LOCAL_CFLAGS += -m64
LOCAL_LDFLAGS += -m64
으로 변경
LOCAL_CFLAGS += -m32
LOCAL_LDFLAGS += -m32
2.Q:
frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] Error 1
해결 방법:
$ gedit frameworks/base/libs/utils/Android.mk
다음 문장 수정
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
... 을 위 하여
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
3.Q:
arm-eabi-gcc: error trying to exec 'cc1': execvp: No such file or directory
make: *** [out/target/product/generic/obj/lib/crtbegin_dynamic.o] Error 1
이전 의존 패키지 가 설치 되 었 다 면 교차 컴 파일 도구 권한 의 문제 일 것 입 니 다.이 문 제 는 글 시작 lunch 에서 권한 부여 명령 을 실행 하면 만 나 지 않 을 것 이다.
4.Q:
<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
<built-in>:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
이 곳 의 컴 파일 오 류 는 ubuntu 11.10 이 GCC 4.6.1 을 사 용 했 기 때 문 입 니 다.
해결 방법:
원본 디 렉 터 리 아래 / build / core / combo / HOST 수정linux - x86. mk 파일:
다음 문장 을
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
으로 변경
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
컴 파일 할 때 유사 한 오류 가 발생 할 수 있 습 니 다. 오류 알림 의 키워드, 예 를 들 어 g + 오류, jre 오류 등 은 모두 세부 적 인 문제 로 해결 하기 좋 습 니 다.
두 시간 가량 기다 린 끝 에 무사히 마 쳤 다.컴 파일 에 성공 하면 system. img 등 미 러 파일 이 생 성 됩 니 다. 다음은 컴 파일 완료 알림 입 니 다.
Target system fs image: out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/generic/system.img
Installed file list: out/target/product/generic/installed-files.txt
3. 컴 파일 된 시스템 시작
컴 파일 이 끝 난 후 out / target / produt / generic 디 렉 터 리 에서 system. img ramdisk. img userdata. img 세 개의 미 러 파일 을 생 성 합 니 다.
시 뮬 레이 터 를 시작 하기 전에 시 뮬 레이 터 시스템 에 환경 변 수 를 설정 하고 gedit ~ /. bashrc 를 실행 해 야 합 니 다. 환경 변 수 는 다음 과 같 습 니 다.
export ANDROID_PRODUCT_OUT=~/Android/source/out/target/product/generic
ANDROID_PRODUCT_OUT_BIN=~/Android/source/out/host/linux-x86/bin
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};
마지막 으로 이러한 변 화 를 동기 화하 고 시 뮬 레이 터 를 시작 합 니 다.
$ source ~/.bashrc
$ cd ~/Android/source/out/target/product/generic
$ emulator -system system.img -data userdata.img -ramdisk ramdisk.img
우리 가 컴 파일 한 시스템 파일 을 불 러 오고 드디어 기다 리 던 시 뮬 레이 터 가 나 타 났 습 니 다.
여기까지 소스 코드 컴 파일 이 완료 되 었 습 니 다. 그 다음 에 자신의 변경 테스트 를 진행 할 수 있 습 니 다.여전히
문제 가 발생 할 수 있 습 니 다. 현재: 권한 부족 / bin / bash: prebuilt / linux - x86 / toolchain / arm - eabi - 4.4.3 / bin / arm - eabi - gcc: 권한 부족 /bin / bash: prebuilt / linux - x86 / toolchain / arm - eabi - 4.4.3 / bin / arm - eabi - gcc: 권한 부족 /bin / bash: build / core / find - jdk - tools - jar. sh: 권한 부족 /bin / bash: build / tools / findleves. py: 권한 이 부족 합 니 다. /bin / bash: build / tools / findleves. py: 권한 이 부족 합 니 다. Checking API: checkapi-last /bin / bash: out / host / linux - x86 / bin / apichek: 권한 부족
해결: chmod a + x prebuilt / linux - x86 / toolchain / arm - eabi - 4.4.3 / bin / arm - eabi - gcc 권한 이 없 는 모든 파일 에 실행 가능 한 권한 추가
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.