리눅스 & 안드로이드2011. 1. 31. 10:42
2011/02/01
어제 저녁, 컴파일러(혹은 어셈블러?)가 -march=armv7-a 옵션을 인식할 수 없다는 에러를 뱉어 냈다.
퇴근하면서 toolchain 버전을 의심 했었는데, 방금 (심지어 업무 시작시간 전!) 확인 해 보니, 예상이 적중!
toolchain arm-eabi v.4.2.1을 사용하고 있었는데, arm-eabi 4.4.0으로 변경하니 해당 부분을 문제 없이 pass! 어제 집에서 희망의 끈이 점점 가늘어져 간다고 생각하고 있었는데, 다시 굵어(?)지게 된건가?-0-



2011/01/31
문제점 #1 해결) warning: choice value used outside its choice group
: 인터넷을 찾아보면 무시하고 넘어가라고 하지만, 찜찜한 마음에 Kconfig 파일을 확인 해 본 결과,
MSM framebuffer 관련 설정들이 froyo에서는 drivers/video/에 있었으나, gingerbread에서는 drivers/staging/에 추가.
물론 dependency에서 상호 exclusive하게 추가되도록 조건이 되어 있는 것 같지만, 어디에 추가되어도 별 문제는 없어보여서, drivers/staging에서 제거.(이렇게 해도 될런지는 확실하지 않음-_-;)
문제점 #2 해결) 문제점 #1과 연관성이 있는지는 잘 모르겠지만, 환경변수에 arm-eabi-* path를 추가하니 해결 됨.

드디어 빌드가 시작되고, 컴파일 경고/에러들을 보여주는것이 이렇게 반가울 수가 없다ㅜ.ㅜ
이제 인고의 시간이 시작되었다!-0-

빌드가 시작되고, warning 두 개 확인하는데 몇 시간이 걸림-_-;

include/config/auto.conf: line 525: KERNEL_LOCAL_VERSION: command not found
: 이 경고는 아무리 찾아봐도 관련된 자료를 찾아볼 수 없었다...
(아마도 uname의 출력으로 버전이 안나오는정도가 아닐까? 라고 스스로 위안을 삼으며 또다시 pass-0-)

warning: "COHERENT_IS_NORMAL" is not defined
: 이 경고는, 아마도 기존 소스에서 kernel patch를 하면서 추가되었던 부분 같은데, kernel update가 되면서 전면적으로 정리된 부분인듯. 기존 memory manager 관련 code를 함부로 수정할 수 없어 define을 적절한(?)위치에 추가.

이제 퇴근시간. 퇴근시간이 되어서야 첫번째 compile error를 확인할 수 있게 되었음ㅜ.ㅜ

error: implicit declaration of function 'dma_cache_maint'
: 이 한 줄이 그렇게 큰 문제를 드러낼 줄이야...-_-; 위 문제점#1에서 해결했던 방법이 적절하지 않은 것 같다.
MSM framebuffer 관련 코드들이 대대적(?)으로 수정된 것 같다. drivers/video/에 있던 코드들을 drivers/staging으로 머지하고, Kconfig에서도 설정을 변경 해 주어야 할듯. 이거 점점 가능성이 희박해 지는 분위기-_-; 다시 머지 합시다!-0-



2011/01/28
빌드를 시작 했으나, menuconfig 부터 벽에 부딪힘.

Android Kernel 빌드 명령어:
1) # make mrproper
2) # make distclean
3) # make *_defconfig ARCH=arm
4) # make ARCH=arm CROSS_COMPILE=arm-eabi-

문제점 #1) 단계 3)에서 계속 수동으로 menuconfig를 진행하는 부분이 나오고, 경고를 보여준다.
warning: choice value used outside its choice group
문제점 #2) 단계 4)에서 CROSS_COMPILE의 실제 경로를 명시 했으나, arm-eabi-* 를 찾을 수 없다는 에러를 보여준다.

만삭의 아내가 집에서 기다리고 있어, 월요일에 확인하기로 결정!-0-



2011/01/27
kernel source merge 완료.
Linux와 Windows 둘 사이의 file system 차이의 큰 특징인 case sensitivity를 간과한 사실을 발견.
Samba를 이용해 Windows에서 BC2(beyond compare 2)를 이용해 비교 및 merge를 했는데, 머지작업 막바지에 이르러 문제가 있을 수 있다는 것을 알게 되었지만 pass.
이상하게 동일한 이름을 갖는 두 개의 파일이 각각 대/소문자로 존재하고, 내용은 다른 경우가 있음.
(kernel/net/netfilter의 몇몇 파일들-0-)



2011/01/24
성공보다는 실패할 확률이 높은 작업을 시작.
진작에 시작 했어야 하는데, 세미나 준비 때문에 약간 딜레이 됨.
일단 커널버전 업데이트를 위해, kernel source merge 부터 시작하기로 결정.
(잘 알지 못해서 좀 무식한 방식으로 진행할 예정 ㅜ.ㅜ)

'리눅스 & 안드로이드' 카테고리의 다른 글

Android Self Q&A (업데이트 중...)  (0) 2011.02.07
Redirect stderr to stdout  (0) 2011.01.31
How to make Android binary images  (1) 2011.01.19
Makefile example for JNI  (0) 2011.01.17
VIM(Vi IMproved) settings  (0) 2011.01.17
Posted by 세월의돌