2011년 2월 26일 토요일

Android - VMware를 이용한 우분투64 에서 안드로이드 커널 빌드 오류2

기쁜 마음에
make 를 수행하면 빌드가 진행 된다.
한참 뒤 화면이 멈춘듯 하지만.... 하드디스크가 바쁘게 움직인다.
그러다 수분뒤 다음과 같은 에러가 난다면...
target Dex: core
make: *** [out/target/common/obj/JAVA_LIBRARYIES/core_intermediates/classes.dex] Killed

이는 메모리 부족으로 인한 오류로,
안드로이드 커널 빌드 요구 사항이 보면 램 1.5기가 하드디스크 10기가 이상으로 명시 되어 있다.

VMware Player를 열어 다음과 같이 설정 하므로써 메모리와 저장 공간을 확보 하자.
참고로 VMware Player 의 가상머신을 종료 하고 하지 않으면 설정을 변경 할 수 없을 수도 있으니 확실히 shut down 해줘야 한다.

VMware Player 를 실행해 가상머신을 선택 후 Virtual Machine Settings... 를 선택한다.

메모리 항목을 선택해 1.5GB(1536MB) 이상으로 설정해 준다.

다음으로 하드디스크를 선택 후 유틸리티-> Expand Disk Capacity 에서 넉넉히 20GB 이상으로 설정 해 준다.

겸사겸사 프로세서를 4개로 늘려 줬다 ㅋㅋ
기분 탓인지 빨라진듯도 하다.
빌드창 올라가는걸 보니 미드 보다 재밌다~

2011년 2월 25일 금요일

Android - unbuntu 10.10 64비트 커널에서 빌드 make 오류

먼저 본인은 리눅스 쌩초짜 임을 밝혀 둡니다 --;;

여전히 안드로이드 커널이 빌드중에 오류를 내뱉는다.
아래는 에러 메시지~

hermina@ubuntu:~/mydroid$ make
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.2.1
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
HOST_ARCH=x86HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=FRG83
============================================
host C: acp <= build/tools/acp/acp.c
In file included from /usr/include/features.h:387,
                 from /usr/include/stdlib.h:25,
                 from build/tools/acp/acp.c:11:
/usr/include/gnu/stubs.h:7: fatal error: gnu/stubs-32.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] Error 1

 뭐 이젠 척보기에도 리눅스를 64비트 버젼으로 깔았고
안드로이드 프레임웍 소스는 32비트를 받았기 때문이라는 삘이 온다.

gnu/stubs-32.h 파일이 없는 거군...

HOST_ARCH=x86 로 되어 있는걸로 보아 값을 x64라던가 비슷한 값으로 바꾸면
쉽게 될것 같은 냄새가 난다 ㅋㅋㅋ

우선 HOST_ARCH=x86의 값이 어디 있는지 알아 보기로 했다.
금방은 못찾겠어서;;;

  make HOST_ARCH=x64

요렇게 해보았다.

build/core/combo/select.mk:61: build/core/combo/HOST_linux-x64.mk: No such file or directory
/bin/bash: prebuilt/linux-x64/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gcc: No such file or directory
build/core/definitions.mk:1659: *** HOST_OS must define get-file-size.  Stop.


오우 노우~
그럼 다음 방법~

gnu/stubs-32.h 가 있도록 해보자...
뭐 우선 패키지인가? 설치 해보자.
구글님이 libc6-dev-i386이라신다 당장 설치해 보자

sudo apt-get install libc6-dev-i386

오우 노우~
또 에러 ㅋㅋ

.......
.......
.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++


구글님께 다시 여쭤 보니
http://source.android.com/source/download.html

64비트일 경우의 필요 유틸들을 다 적어 놨다.
확인 후 빠진 녀석을 체크 하자.
(참고 하던 책은 32비트 기준으로만 설명이 되어 있었다.)

sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
sudo apt-get update
sudo apt-get install sun-java5-jdk
sudo update-java-alternatives -s java-1.5.0-sun
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

2011년 2월 23일 수요일

Android - Failed to create the SD card 해결

 - 원인
64비트 리눅스가 깔린 상태에서 32비트 안드로이드 SDK를 설치,
따라서 SD카드를 할당하는데 쓰이는 ia32-libs 패키지가 디폴트로 존제 하지 않으므로 발생하는 에러

 - 해결방법
ia32-libs 패키지의 설치
예) sudo apt-get install ia32-libs

64비트가 구지 쓰고 싶어서 설치 했는데...
녀석이 발목 잡는다;;;