Android源码编译:Android系统源码编译时遇到的错误及解决方法

下面是在编译安卓源码是遇到的错误,记录下来,防止再次遇到。

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)

 

 

你可能感兴趣的:(安卓系统相关)