编译时错误提示:XXX already defined by YYYY

错误提示:

在编译中我们有时会碰到一种错误提示如下:

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已定义错误

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章