Mac OS X 에서 안드로이드 컴파일 하기
나는 이렇게 해줬음
Messiui-MacBook-Pro:bin messijeon$ sudo ln -s /usr/bin/llvm-gcc-4.2 cc
Messiui-MacBook-Pro:bin messijeon$ sudo ln -s /usr/bin/llvm-g++-4.2 c++
Messiui-MacBook-Pro:bin messijeon$ sudo ln -s /usr/bin/llvm-cpp-4.2 cpp
Messiui-MacBook-Pro:bin messijeon$ sudo ln -s /usr/bin/llvm-g++-4.2 g++
그리고 strnlen 에러나는데 그건 #if 0 로 막으면 된다.
출처 : http://androidhuman.tistory.com/entry/Mac-OS-X-107-Lion-%EC%97%90%EC%84%9C-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%B9%8C%EB%93%9C%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
1. Brew for Mac 설치
Brew(Homebrew)는 리눅스의 apt-get 명령어와 같이
빌드에 필요한 패키지를 쉽게 설치할 수 있도록 도와주는 패키지 관리자입니다.
brew를 설치하기 위해 터미널에서 다음 명령어를 입력합니다.
$ ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
설치 후 문제점이 없는지 확인하기 위해 brew doctor를 실행합니다.
$ brew doctor
주의
Command line Tools가 설치되어 있어야 합니다. Command line tools는 애플 개발자 홈페이지를 통해 다운로드하거나 XCode의 Preferences -> Downloads -> Components 탭에서 설치할 수 있습니다.
문제가 없다면 다음 명령어를 입력하여 빌드에 필요한 패키지를 설치합니다.
$ brew install git coreutils findutils gnu-sed gnupg pngcrush
2. 안드로이드 소스를 받을 디스크 이미지 생성하기
안드로이드를 빌드하려면 대/소문자를 구분하는 파일시스템이 필요합니다.
디스크 관리자(hdiutil)을 사용하여 디스크 이미지를 생성합니다.
안드로이드 소스 용량이 꽤 크므로 디스크 크기는 넉넉하게 잡는 것이 좋습니다. (최소 40GB 권장)
다음 명령어를 입력하여 디스크 이미지를 생성합니다.
$ hdiutil create -type SPARSE -fs "Case-sensitive Journaled HFS+" -size 60g -volname "Android" -attach ~/Android
위에서 size에 들어갈 값은 자신이 원하는 크기로 조절하시면 되고, attach 뒤에 들어가는 인자는 만들어진 디스크 이미지를 저장할 경로로 이 또한 자신이 원하는 위치로 지정하면 됩니다.
디스크 이미지가 생성되었다면, 디스크를 마운트하여 소스를 받을 준비를 합니다.
3. repo 다운로드, 설정 및 소스 다운로드
repo는 Git 저장소에 있는 안드로이드 소스를 쉽게 다운로드하기 위한 툴입니다.
repo를 다운로드하기 전에 먼저 자신의 홈 폴더에 /bin 디렉토리를 생성합니다.
디렉토리를 생성한 후 이를 PATH에 추가합니다.
$ mkdir ~/bin
$ PATH=~/bin:$PATH
다음, repo를 다운로드한 후 repo를 실행할 수 있도록 권한을 변경해줍니다.
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
이제 소스를 다운로드할 준비가 되었습니다.
소스를 다운로드하기 위해 앞에서 생성한 디스크 이미지로 이동한 후,
repo init을 실행하여 소스 다운로드를 위핸 설정을 해줍니다. 여기에서는 master 브랜치를 다운로드하는 경우를 가정합니다.
$ repo init -u https://android.googlesource.com/platform/manifest
이제 소스를 받을 준비가 모두 끝났습니다. repo sync를 입력하면 master 브랜치의 소스를 다운로드합니다.
소스 용량이 꽤 크므로 네트워크 사정에 따라 2~3시간까지 소요될 수도 있습니다.
$ repo sync
주의
OSX 10.7을 클린설치 한 경우 OSX 10.6 SDK가 포함되어 있지 않습니다. (XCode 4.4에 포함되어 있지 않기 때문) 때문에 그냥 빌드를 실행하려 하면 다음과 같은 메시지가 표시됩니다.
build/core/combo/HOST_darwin-x86.mk:38: *****************************************************
build/core/combo/HOST_darwin-x86.mk:39: * Can not find SDK 10.6 at /Developer/SDKs/MacOSX10.6.sdk
build/core/combo/HOST_darwin-x86.mk:40: * or /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk
build/core/combo/HOST_darwin-x86.mk:41: *****************************************************
build/core/combo/HOST_darwin-x86.mk:42: *** Stop.. Stop.
이를 해결하려면 애플 개발자 홈페이지에서 XCode 4.3을 다운로드한 후, 패키지 내용 보기 -> Contets/Developer/Platforms/MacOSX.platform/Developer/SDKs/에 있는 MacOSX10.6.sdk를 /Developer/SDKs에 복사해주면 됩니다.
출처 : http://chosungmann.wordpress.com/2013/03/16/xcode-3%EC%97%90%EC%84%9C-mac-os-x-10-5-sdk%EB%A7%8C-%EA%B0%80%EC%A0%B8%EC%99%80-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0/
Mac OS에서 Xcode 4로 오픈소스를 빌드하다보면 종종 Mac OS X 10.5 SDK가 없어 문제될 때가 있다.
Xcode 4에 Mac OS X 10.5 SDK가 빠져있기 때문인데, 그렇다고 무작정 Xcode 3를 설치했다가는 커널 패닉을 만날 수도 있다.
이럴 때는 Xcode 3에서 Mac OS X 10.5 SDK만 가져와 설치하면 된다.
Step 1. 애플 개발자 사이트에서 Xcode 3.2.6 (xcode_3.2.6_and_ios_sdk_4.3.dmg)을 다운로드한다.
Step 2. xcode_3.2.6_and_ios_sdk_4.3.dmg를 마운트한 다음 숨겨진 Packages 폴더에서 MacOSX10.5.pkg를 열고 실행한다.
$ open xcode_3.2.6_and_ios_sdk_4.3.dmg
$ cd /Volumes/Xcode\ and\ iOS\ SDK/Packages
$ open MacOSX10.5.pkg
Step 3. MacOSX10.5.pkg를 /Developer 위치에 설치한다. 기본적으로는 / 위치에 설치하도록 되어있으니 주의한다.
Step 4. Mac OS X 10.5 SDK에는 Darwin 11 호환 심볼릭 링크 몇 가지가 빠져있다. 다음 명령으로 빠진 심볼릭 링크를 추가한다.
$ cd /Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.2.1
$ sudo ln -s i686-apple-darwin9 i686-apple-darwin11
$ sudo ln -s x86_64-apple-darwin9 x86_64-apple-darwin11
출처: http://peels.kr/irondog/2012/08/os-x-lion-gingerbread-build.html
계속 우분투를 써 오다가 노트북을 두개 다니기 불편해서 맥에서 빌드하기로 결정하고 문서를 뒤져보니 방법이 있긴 하더군요. 헌데 구글 안드로이드 문서만으로는 안되고 몇가지 추가 설정이 필요 했습니다.
해당 내용을 여기서 나누고자 합니다.
먼저 간단한 순서는 다음과 같습니다.
1. git의 올바른 동작을 위해 case-sensitive한 파일 시스템을 만들어야 합니다.
2. Xcode 및 MacPorts를 설치해야 합니다.
3. gcc, cc 링크 수정
4. 진저 브레드의 경우 elf.h을 넣어야 합니다.
파일 시스템 만들기
다음과 같이 파일 시스템을 만듭니다.
# hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
마운트 시킬 명력을 설정 합니다.
# mount the android file image function mountAndroid { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
위의 코드를 ~/.bashrc_profile 에 넣습니다.
이후 "mountAndroid"명령으로 만든 파일 시스템을 볼륨(/Volumes/android)에 마운트 할 수 있습니다.
Xcode및 MacPorts설치
Xcode는 애플 개발자 사이트에서 다운로드 하시고 설치 하시면 됩니다.
MacPorts는 make, git, gpg같은 리눅스/유닉스 오픈소스 툴을 쓰기 위해 필요 합니다.
macports.org 에서 다운로드 받아 설치하면 됩니다. 보통 /opt/local/bin에 설치가 되니 필요한 PATH를 맞춰서 쓰시면 됩니다. 필요한 툴 설치는 다음 명령을 입력 하세요.
$ POSIXLY_CORRECT=1 sudo port install gmake libsdl git-core gnupg
OS X의 기본 파일 오픈 제한이 작기 때문에 다음과 같이 제한을 늘려 줍니다.
# set the number of open files to be 1024 ulimit -S -n 1024
위 내용을 ~/.bashrc_profile에 넣습니다.
clang, cc 링크 수정
Xcode의 기본 컴파일러는 llvm계열의 clang입니다. 그러므로 다음 링크를 바꿔 주세요.
$ cd /usr/bin
$ ln -s /usr/bin/llvm-gcc-4.2 clang
$ ln -s //usr/bin/llvm-gcc-4.2 cc
$ ln -s /usr/bin/llvm-gcc-4.2 cpp
$ ln -s /usr/bin/llvm-gcc-4.2 g++
$ ln -s /usr/bin/llvm-gcc-4.2 c++
먼저 /Developer/SDKs/ 에 MacOSX10.5.sdk가 있어야 합니다.
제 경우 10.5.sdk가 /Developer-3.2.1/에 있었고 링크를 걸어 해결 했습니다.
$ ln -s /Developer-3.2.1/SDKs/MacOSX10.5.sdk /Developer/SDKs/
안되시면 그냥 복사 하는 것도 방법이겠죠.
$ sudo cp -R /Developer324/SDKs/MacOSX10.5.sdk /Developer/SDKs
커널 컴파일시 오류 해결을 위해 elf.h 구해서 넣기
해당 디렉토리의 modpost.h, mk_elfconfig.c 소스에서 #include <elf.h>를 #include "elf.h"로 바꿨습니다.
http://source.android.com/source/initializing.html
http://blog.daum.net/sjs1124/15237872
https://groups.google.com/forum/#!msg/taintdroid/ujrXgURyMHY/jIXoyrrFTVoJ[1-25]
Added. 2012-09-04
I found errors caused by libsdl pre-compiled object file. So you should uinstall libsdl and install libsdl-devel instead.
$ port uninstall libsdl
$ port install libsdl-devel
If you get same errors also, you should install libsdl from source code and must install to '/opt/local' because library link order problem.
like this:
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
source code download position:
http://www.libsdl.org/download-1.2.php
출처 : https://groups.google.com/forum/#!msg/android-building/Vhw56NONaAM/GLfo0yfnsB4J
The following should fix this:
$ sudo ln -s /usr/bin/llvm-g++-4.2 /usr/bin/c++
'Programing 미분류' 카테고리의 다른 글
repo 명령어 (command) 설명 init sync diff prune forall upload download start status (0) | 2013.05.22 |
---|---|
Eclipse 단축키 모음 (0) | 2013.02.19 |
Virtualbox uuid 바꾸기 (0) | 2012.08.29 |