悠悠途恩
环境:ubuntu 10.04 X86_64
编译android
#make -j4时和make c文件为so文件时,有如下报错信息:
……
build/core/base_rules.mk:102: *** user tag detected on new module - user tags are only supported on legacy modules. Stop.
查询了下官方文档才发现如下信息:
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
原来是我这个系统模块放在了framework下,需要制定在那种情况下才编译,由于未指定LOCAL_MODULE_TAGS ,因而在用mmm 制定去make 时会报错。
解决方法: 在Android.mk 下添加下面代码即可解决。
LOCAL_MODULE_TAGS := optional
结果还是不行,最终解决办法如下:
1、把android系统代码中的每一个Android.mk的 “LOCAL_MODULE_TAGS := user”替换为 “LOCAL_MODULE_TAGS := optional”,可以在系统根目录下输入下面的命令一起替换:
"find ./ -exec grep -l "LOCAL_MODULE_TAGS := user" {} \; -exec sed -i.bak s/"LOCAL_MODULE_TAGS := user"/"LOCAL_MODULE_TAGS := optional"/g {} \;"
2、把gcc 4.4降级到gcc 4.3,因为 4.4 会报错:
CODE:
sudo apt-get install gcc-4.3
sudo apt-get install g++-4.3
rm /usr/bin/gcc
rm /usr/bin/g++
ln -s /usr/bin/gcc-4.3 /usr/bin/gcc
ln -s /usr/bin/g++-4.3 /usr/bin/g++