编译Android源码致命错误解决方案

相信各位和我一样正在研究Android内核的朋友们在经过漫长的源码下载的等待后,喜悦的拿到了源代码开始编译。可是在编译过程中,也会和下载一样出现各种各样的不顺。在这里我记录了一下本人在编译过程中的所有问题,如有疏漏,欢迎朋友们指出。
下面是按照正常编译流程记录的所需步骤和操作,可能遇到的问题会在后面讲述。

步骤一:初始化编译环境

首先进入android源码所在目录,然后在Linux终端执行以下命令来完成编译初始化:

# source build/envsetup.sh

envsetup.sh是个Linux脚本文件,它主要用来初始化一些编译命令,如:m,cgrep等等。在执行了envsetup.sh命令后可以看到终端输出如下信息:

including device/samsung/maguro/vendorsetup.sh including device/samsung/tuna/vendorsetup.sh including device/ti/panda/vendorsetup.sh including sdk/bash_completion/adb.bash

在envsetup脚本中定义了一写shell函数。当我们通过souce命令执行envsetup之后,就可以在Linux终端执行这些函数。可以执行help命令来查看envsetup.sh脚本中定义的命令。

步骤二:选择目标

这里使用lunch命令来设置编译目标,默认为full-eng。命令如下:

# lunch

可以看到终端输出如下:

You're building on Linux Lunch menu... pick a combo: 1. full-eng 2. full_x86-eng 3. vbox_x86-eng 4. full_maguro-userdebug 5. full_tuna-userdebug 6. full_panda-eng Which would you like? [full-eng]

此时可以选择目标,默认即可。

步骤三:编译Android源代码 #make 致命错误分析:

1.Oracle的java development kit都出到1.8了,可是编译Android要用的还是JDK1.6.。。。这里朋友们需要注意你的JDK版本是不是1.6,不是则无法编译。

期间会可能会出现部分工具未安装的问题,需要按照提示安装相应软件:

(1)提示: /usr/bin/ld: cannot find zlib collect2: ld 返回 1 make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1 .make: *** 正在等待未完成的任务.... .true root@mc-virtual-machine:~/android/bin/android_source#

解决方法:这就说明系统里有部分必须的软件未安装,通过apt-get install 安装即可。其中,zlib工具包名不是zlib,而是zlib1g-dev,即:

sudo apt-get install zlib1g-dev

可以完成安装。

(2)提示: /usr/bin/ld: cannot find -lncurses collect2: ld 返回 1 make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] 错误 1 make: *** 正在等待未完成的任务.... true root@mc-virtual-machine:~/android/bin/android_source

解决方法:安装libncurses5-dev:i386则可以搞定~~ 如下:

# apt-get install libncurses5-dev:i386 (3)提示: cc1plus: all warnings being treated as errors make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] 错误 1 make: *** 正在等待未完成的任务.... root@mc-virtual-machine:~/android/bin/android_source#

解决方法:

gedit build/core/combo/HOST_linux-x86.mk

其中找到HOST_GLOBAL_CFLAGS变量。修改其值为:HOST_GLOBAL_CFLAGS+=-U_FORTTFY_SOURCE -D_FORTTFY_SOURCE=0再次运行即可。

(4)提示: platform_types.h:12:22: 致命错误: X11/Xlib.h:没有那个文件或目录 编译中断。 make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_renderer_intermediates/main.o] 错误 1 make: *** 正在等待未完成的任务.... root@mc-virtual-machine:~/android/bin/android_source#

解决方法: 从错误提示中很明显可以看出,是缺少x11文件,理所当然的要先安装,命令如下:

# apt-get install x11-dev #(5)提示: 致命错误: GL/glx.h:没有那个文件或目录

解决方法:安装GL/glx.hf命令如下:

sudo apt-get install libgl1-mesa-dev (6)提示: make: *** [out/host/linux-x86/obj/EXECUTABLES/llvm-rs-cc_intermediates/slang_rs_export_foreach.o] 错误 1 make: *** 正在等待未完成的任务.... root@mc-virtual-machine:~/android/bin/android_source#

解决方法:

$ vim frameworks/compile/slang/Android.mk

将 local_cflags_for_slang 所在行最后的 -Werror 去掉:
local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Werror 变成:
local_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter

(7)提示: make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profiles.o] 错误 1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/38ce461258ac894c740d56098f3a30c9.html