Site icon Re:제로부터 시작하는 개발자 생활

AOSP build on ARM for ARM 1일차시도

을 해보려고, ARM서버를 사볼까. 뭘해볼가 고민하던중에

본격 AOSP 개발환경 구축하기 : AOSP 사이트에 있는 가이드대로 따라하면, X86용 툴들로 되어 있는 것들이 있어서 ARM Host 에서는 의존성 때문에 몇 개가 걸려나오고 설치가 진행이 안됩니다.

ID@AOSPonARM:/mnt/bsp$ sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
Reading package lists… Done
Building dependency tree
Reading state information… Done
Note, selecting 'git' instead of 'git-core'
Package gcc-multilib is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'gcc-multilib' has no installation candidate
E: Unable to locate package g++-multilib
E: Couldn't find any package by regex 'g++-multilib'
E: Unable to locate package libc6-dev-i386
E: Unable to locate package lib32ncurses5-dev
E: Unable to locate package lib32z1-dev

package들을 열심히 검색해서 바꾸어 봅니다.
– git-core는 git으로 대체
– gcc-multilib은 gcc-multilib-arm-linux-gnueabihf
– g++multilib도 g++-multilib-arm-linux-gnueabihf
– libc6-dev-i386은 libc65-dev-armhf-cross
– lib32ncurses5-dev 는 libncurses5-dev
– lib32z1-dev는 libz1->zlib1g
로 바꾸면 일단 나름 구색은 맞추어서 환경 설정은 완료… 나중에 알겠죠. 뭔가 문제 터지면..

이제 AOSP 코드 받으러 고고

python이 없어서, 추가로
apt install python3 python-is-python3
하고, apt로 repo설치는 안되는 듯 하니. AOSP가이드 대로 프로젝트에서 직접 다운 받아서 설치
https://source.android.com/docs/setup/develop#installing-repo:~:text=export%20REPO%3D%24(mktemp%20/tmp/repo.XXXXXXXXX)%0Acurl%20%2Do%20%24%7BREPO%7D%20https%3A//storage.googleapis.com/git%2Drepo%2Ddownloads/repo%0Agpg%20%2D%2Drecv%2Dkey%208BB9AD793E8E6153AF0F9A4416530D5E920F5C65%0Acurl%20%2Ds%20https%3A//storage.googleapis.com/git%2Drepo%2Ddownloads/repo.asc%20%7C%20gpg%20%2D%2Dverify%20%2D%20%24%7BREPO%7D%20%26%26%20install%20%2Dm%20755%20%24%7BREPO%7D%20~/bin/repo

bin폴더 생성하고, 다운받고, .bashrc에 path까지 잡아서 source해주면, 아래처럼 아름다운 버전이 표시됨.
ID@AOSPonARM:/mnt/bsp$ repo version
repo launcher version 2.21
(from /home/ID/bin/repo)
git 2.25.1
Python 3.8.10 (default, Jun 22 2022, 20:18:18)
[GCC 9.4.0]
OS Linux 5.15.0-1017-azure (#20~20.04.1-Ubuntu SMP Fri Aug 5 15:46:55 UTC 2022)
CPU aarch64 (aarch64)
Bug reports: https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue

이제 받아봅니다.

ID@AOSPonARM:/mnt/bsp$ repo init -u https://android.googlesource.com/platform/manifest
Downloading Repo source from https://gerrit.googlesource.com/git-repo
repo: Updating release signing keys to keyset ver 2.3

Your Name [Ubuntu]: ~~~
Your Email [~~~]: ~~~

Your identity is: ~~~ ~~@~~
is this correct [y/N]? y

Testing colorized output (for 'repo diff', 'repo status'):
black red green yellow blue magenta cyan white
bold dim ul reverse
Enable color display in this user account (y/N)? y

repo has been initialized in /mnt/bsp/
If this is not the directory in which you want to initialize repo, please run:
rm -r /mnt/bsp//.repo
and try again.

이제 repo sync 하고 기다려봅니다.. 속도는 제법 나오는것 같네요.. 언제 Network 속도제한 걸릴지는 모르겠지만요.

이것저것 설정 다 하고, 무료체험 224,930 크레딧 남음… 언제 다 떨어질려나요. 자고 일어나면, 좀 달라져 있겠죠? 다 받고, 잠시 꺼놓고 있고 싶은데..

Fetching: 100% (1148/1148), done in 30m58.248s
Garbage collecting: 100% (1148/1148), done in 22.240s
Checking out: 100% (1148/1148), done in 6m12.272s

이 정도 시간이 걸리는군요.

그냥 빌드하려 lunch하니 아무것도 안 떠서, 다시 한번 repo init -b master로 지정하고 받아봅니다.

Fetching: 100% (1148/1148), done in 2m35.073s
Garbage collecting: 100% (1148/1148), done in 5.170s
Checking out: 100% (1148/1148), done in 10.328s
repo sync has finished successfully.

ID@AOSPonARM:/mnt/bsp$ . build/envsetup.sh
ID@AOSPonARM:/mnt/bsp$ lunch

You're building on Linux
Warning: Cannot display lunch menu.
Note: You can invoke lunch with an explicit target:
usage: lunch [target]

Which would you like? [aosp_arm-eng]
Pick from common choices above (e.g. 13) or specify your own (e.g. aosp_barbet-eng):
/mnt/bsp/build/blueprint/microfactory/microfactory.bash: line 63: /mnt/bsp/prebuilts/go/linux-x86//bin/go: cannot execute binary file: Exec format error

toolchain이 아직이네요.. 흠..

일단 go부터 어택하기로 마음먹고.
https://go.dev/dl/
인스턴스는 중지시킵니다. 혹여나 하는 마음에 다시 실행해보니. 마운트만 자동처리 안해놔서 끊겨 있고, 다시 마운트 하니 일단 다 살아 있네요. 중지 시켜 두고, 비용이랑 자료가 언제까지 살아 있나도 봐야겠네요..


Exit mobile version