錯誤提示:
在編譯中我們有時會碰到一種錯誤提示如下:
build/core/base_rules.mk:XXX: *** YYYY/ZZZZ/AAAA: MODULE.BBBB already defined by CCCC/DDDD. stop
分析原因:
上面這種提示的意思是說在某個變量或者模塊MODULE.BBBB已經在目錄中CCCC/DDDD定義了,而在目錄YYYY/ZZZZ/AAAA中要再次被定義所以會提示錯誤。總結一下就是在上面兩個目錄中做了同樣的事情所以引起衝突,所以出錯。
解決方法:
通過上面分析可以看出在上面的兩個目錄中同時定義一個變量或者模塊,而我們需要做的就是比較一下上面兩個目錄中那個操作是需要的,而將不需要的那個操作屏蔽掉就可以了。這裏的屏蔽可以是刪除,也可以是使用其他的名字命名。
個人例子說明:
我個人在裏犯錯誤是因爲我在目錄YYYY/ZZZZ/AAAA中要將一個庫文件編譯爲so庫。並提供給目錄CCCC/DDDD使用。而在目錄CCCC/DDDD中我已經有了這個庫,所以這裏會出現這個錯誤。
所以我在一些博客中看到有的同學在編譯的時候使用make clean;make這是有必要的,這樣有時候可以避免一些這樣的錯誤。
參考文章:
Android源碼編譯 build/core/base_rules.mk 報錯解決方法
kernel-module – MODULE.TARGET.SHARED_LIBRARIES.libjpeg已定義錯誤