1.编译时候出现如下错误:
build/core/base_rules.mk:134: *** prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.6/lib32:
MODULE.HOST.STATIC_LIBRARIES.libbfd already defined by prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/lib32. Stop.
把prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.6/lib32目录删除没有出现错误。
2.make:*** No rule to make target `external/wpa_supplicant_8/wpa_supplicant/src/drivers/drivers.mk‘. Stop.
在ubuntu下复制一份过来,
这个wpa_supplicant_8里面有一些软链接,如果在Windows下解包了,在复制到Ubuntu下会导致失效;
3.******** missing separator. stop
把前面的文件删除即可。
4.
编译错误:
build/core/Makefile:25:***Prebuilt apk found in PRODUCT_COPY_FILES:
device/ti/nexttab/google_paly/Gmail.apk:system/app/Gmail.apk, use BUILD_PREBUILT instead!. Stop.
解决:
gedit build/core/Makefile
#Tommy Delete 删除如下代码
#define check-product-copy-files
#$(if $(filter %.apk, $(1)),$(error \
# Prebuilt apk found in PRODUCT_COPY_FILES: $(1), use BUILD_PREBUILT #instead!))
#endef
编译OK
烧写系统后,便可使用系统中应用了。但是有些应用不能用这种方法安装,如果用这种方式,生成的应用打不开。
*******************************
5.-fuse-linker-plugin, but liblto_plugin.so not found是在externel这个目录有问题
如果要让新安装的apk有系统权限,可以在system/bin/目录下的文件里加上chmod 777 /data/app/*.apk 如果出现Read-only file system问题。应先挂载系统:mount -o remount,rw /system 这个命令也可以放在系统起来执行的文件里面。逗号两边没有空格、
6.
编译错误提示:
make -C /lib/modules/3.2.0-29-generic-pae/build M=/home/linux/driver/experiment/ex04
make[1]: Entering directory `/usr/src/linux-headers-3.2.0-29-generic-pae'
LD /home/linux/driver/experiment/ex04/built-in.o
CC [M] /home/linux/driver/experiment/ex04/hello.o
/home/linux/driver/experiment/ex04/hello.c:24:1: error: negative width in bit-field ‘
/home/linux/driver/experiment/ex04/hello.c:25:2: error: negative width in bit-field ‘
make[2]: *** [/home/linux/driver/experiment/ex04/hello.o] Error 1
make[1]: *** [_module_/home/linux/driver/experiment/ex04] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic-pae'
make: *** [modules] Error 2
最后发现是module_param声明中有关权限的问题,这个权限不能是可写的.也就是说这个权限只能是rx的任意组合,5或4或1.因为模块运行在内核空间中,权限要求比较严格.
所以将
module_param(mystring, charp, 0777);
改成
module_param(mystring, charp, 0555);
就可以了.
7. 关闭error, forbidden warning
最近在编译android kernel时,遇到error, forbidden warning, 导致编译中断,大大降低了debug效率。
关闭方法如下:在kernel/scripts/gcc-wrapper.py中注释掉interpret_warning(line)即可。
--- a/scripts/gcc-wrapper.py
+++ b/scripts/gcc-wrapper.py
@@ -78,7 +78,7 @@ def run_gcc():
proc = subprocess.Popen(args, stderr=subprocess.PIPE)
for line in proc.stderr:
print line,
- interpret_warning(line)
+ #interpret_warning(line)