ubuntu 11.10 (32 비트 시스템) 에서 안 드 로 이 드 소스 코드 make 오류 해결 방법 을 컴 파일 합 니 다.

본 고 는 ubuntu 11.10 시스템 에서 안 드 로 이 드 2.3.3 소스 코드 를 컴 파일 하 는 것 을 소개 합 니 다. 컴 파일 하기 전에 두 편의 글 을 확인 하 십시오 (http://www.cnblogs.com/dwayne/archive/2011/11/16/2250732.html화해시키다http://www.cnblogs.com/dwayne/archive/2011/11/11/2245383.html) 필요 한 준비 작업 이 성공 적 으로 완료 되 었 습 니 다.컴 파일 이 완료 되 어 시스템 미 러 파일 을 만 들 고 시 뮬 레이 터 에서 실 행 됩 니 다.
준비 작업 이 끝 난 후 컴 파일 작업 을 시작 하 다.다운로드 한 소스 코드 는 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

우리 가 컴 파일 한 시스템 파일 을 불 러 오고 드디어 기다 리 던 시 뮬 레이 터 가 나 타 났 습 니 다.
ubuntu 11.10(32位系统)下编译android源码 make错误解决办法_第1张图片
여기까지 소스 코드 컴 파일 이 완료 되 었 습 니 다. 그 다음 에 자신의 변경 테스트 를 진행 할 수 있 습 니 다.여전히
문제 가 발생 할 수 있 습 니 다. 현재: 권한 부족 / 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 권한 이 없 는 모든 파일 에 실행 가능 한 권한 추가

좋은 웹페이지 즐겨찾기