본문 바로가기

Android

ninja: error: 'blahblah.so.toc', needed by 'something.so', missing and no known rule to make it

Android 모듈 빌드 중 제목과 같은 에러가 발생하는 경우가 있습니다.

저의 경우, 다음과 같은 경우에 위 빌드에러를 만났습니다.

 

1. Android 소스 전체 빌드를 완료합니다.

2. 신규 기능 구현을 하고 구현 내용 중 일부인 something.so를 부분빌드합니다.

 

이때 something.so를 빌드하기 위해 blahblah.so가 필요한데, blahblah.so를 필요로하는 모듈이 something.so가 유일하다면 위와 같은 빌드에러가 발생할 수 있습니다.

 

현상만 보면 빌드에러가 발생하는 이유를 알기 어렵습니다. 왜냐하면 신규 모듈인 something.so가 필요로하는 blahblah.so는 out 폴더에 잘 만들어져 있는데 blahblah.so.toc가 없기 때문에 something.so를 만들 수 없다고 에러가 발생하기 때문입니다.

 

*.toc 파일은 전체 빌드 시 모듈간의 의존관계에 대해 기록됩니다. 1번 단계에서 빌드 시에는 blahblah.so를 필요로하는 모듈이 없고 something.so도 아직 없는 상태이기 때문에 blahblah.so.toc 파일이 안만들어집니다.

이후 새롭게 blahblah.so를 필요로하는 something.so를 만들려고 하나 blahblah.so.toc가 없기 때문에 발생하는 에러입니다.

 

그래서 해결방법은...

전체빌드를 다시 하면 됩니다. 부분빌드가 아닌 전체빌드 시에는 의존관계조사를 다시 수행하기 때문에 blahblah.so.toc 파일이 새롭게 만들어지고 something.so의 빌드도 문제없이 성공하게 됩니다.