728x90
반응형
빌드 에러 발생
Android.mk 파일 빌드 중에 아래와 같은 에러가 발생하였다. 원인을 파악해보고, 수정 해보자.
"*** 첫번째 타겟보다 앞에서 명령어가 시작되었습니다. 멈춤."
device/Android.mk:219: *** 첫번째 타겟보다 앞에서 명령어가 시작되었습니다. 멈춤.
** Don't have a product spec for: 'build_eng'
** Do you have the right repo manifest?
원인
원인 파악을 위해서 Androld.mk 219 라인을 살펴 보았다. 원래 218 라인 까지 있는 코드 였는데, 219 이하를 추가를 하면서 218 라인에 \ 를 추가하지 않고, 219 이하 라인에만 이를 추가하였다. 이 이후에 위와 같은 에러가 발생하였다.
219 라인에서 발생한다고 나와있지만, 항상 디버깅 시에는 219 라인 이전 이후를 잘 살펴야 한다.
217 $(LOCAL_DIR)/test.mk \
218 $(LOCAL_DIR)/test1.mk #여기서 문제가 발생하였다.
219 $(LOCAL_DIR)/test2.mk \
Make 파일에서 \ 의 의미
make 파일에서 긴 문장을 여러 라인에 표시하기 위해서 '\'를 사용한다. 긴 하나의 문장을 하나로 쭈우우욱 적으면 가독성이 떨어지기때문에 위와 같은 방법을 사용한다.
위의 에러는 '첫 번째 타겟이 나오기 전에 명령어가 시작되었다'는 애매한 에러 메시지이다. 필자가 경험한 이 에러의 원인은 '\'를 사용할 때, 이를 잘못 사용했기 때문이였다.
즉, '\'부분은 라인의 가장 끝문자가 되어야 하는데 실수로 '\'뒤에 스페이스를 몇 개 집어넣으면 여지없이 위의 에러가 발생한다.
수정
219번째 줄(근처)에서 '\' 문자를 추가하자.
또한, 혹시나 '\' 문자가 있다면 이 문자가 라인의 가장 끝문자가 되도록 한다. 즉 '\'문자 다음에 나오는 글자(스페이스가 대부분) 는 모조리 없애 버린다.
commands commence before first target. Stop
영문 빌드 에러 메시지는 아래와 같다.
*** commands commence before first target. Stop
맺으며
space check of line end. 라인 끝의 공백과 '\" 문자를 확인하자.
728x90
반응형
'IT > Android' 카테고리의 다른 글
Location 백그라운드에서 위치 정보 액세스 및 권한 팝업 (0) | 2024.01.31 |
---|---|
System.err: android.content.pm.PackageManager$NameNotFoundException: com.example.app (2) | 2024.01.31 |
Android DeadObjectException (0) | 2020.11.05 |
안드로이드 ANR 분석 (2) | 2020.06.12 |
Android FastBoot Error (2) | 2020.06.08 |
댓글