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

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

字数1506 阅读17447 评论0 喜欢3

相信各位和我一样正在研究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
[email protected]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
[email protected]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: *** 正在等待未完成的任务....
[email protected]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: *** 正在等待未完成的任务....
[email protected]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: *** 正在等待未完成的任务....
[email protected]:~/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

解决方法:
这里需要修改GCC和G++版本为4.4版,但是默认的一般是4.6。所以我们需要下载4.4并且将G++/GCC指令链接到4.4版本。如下:

sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4

通 过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。
Ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。

装完后在/usr/bin目录下

$ ls -l gcc*
lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6  .-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6  

 lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6
 -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
 -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

发现gcc 链接到gcc-4.6, 需要将它改为链接到gcc-4.4 :

 sudo mv gcc gcc.bak
 sudo ln -s gcc-4.4 gcc

一样的方法修改G++:

ls -l g++*
lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

需要将g++链接改为g++-4.4:

 /usr/bin$ sudo mv g++ g++.bak
 /usr/bin$sudo ln -s g++-4.4 g++

再查看gcc和g++版本号:

gcc -v g++ -v

均显示gcc version 4.4.6 ,说明gcc 4.4安装成功

时间: 2024-10-07 04:17:37

编译Android源码致命错误解决方案的相关文章

Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

本文转至  http://blog.csdn.net/yanzi1225627/article/details/9263097 昨晚在编译源码,make一段时间之后报错如下: [html] view plaincopyprint? # A fatal error has been detected by the Java Runtime Environment: # #  SIGSEGV (0xb) at pc=0x40362d33, pid=12195, tid=2835454784 # # 

【转】在Ubuntu下编译Android源码并运行Emulator

原文网址:http://www.mcuos.com/thread-4553-1-1.html 建立编译环境 1.在VirtualBox上安装Ubuntu 2.安装JDK   $ sudo apt-get install sun-java5-jdk  或   $ sudo apt-get install sun-java6-jdk (donut 1.6)3.安装flex,bison,gperf,libsdl-dev,libesd0-dev,libwxgtk2.6-dev(可选),build-ess

[原]编译Android源码过程中遇到的问题

编译Android源码的过程参考Android官网介绍: 1.下载Android源码的步骤:https://source.android.com/source/downloading.html 2.编译Android源码的步骤:https://source.android.com/source/building-running.html 下面就是我遇到的一些问题: 1.Compile Android Source时JDK相关的错误: 错误1: target release 1.5 conflic

编译Android源码

Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源码之前,先掌握Android源码的组成. Android源码目录结构 在Android源码中,按照不同功能代码被放在不同的目录下: 目录 描述 bionic 针对Android系统定制的仿生标准C库.链接器等所在目录,Android系统并没有使用Linux的glibc库,bioinc C库针对嵌入式系统做了优化,添加了一些And

【转】Ubuntu10.04上编译Android源码(Build Android source in Ubuntu10.04 Platform)

原文网址:http://blog.csdn.net/chenyafei617/article/details/6570928 一.Introduction 今天我们就来谈谈如何在Ubuntu平台上面编译android源码,我的是ubuntu10.04版本,在进行编译流程讲解之前我想讲一下 make .make snod .make kernel的作用,m.mm.mmm它们的作用以及区别. - make:                 编译源码,生成相应的系统镜像文件.             

Android介绍以及源码编译---Android源码下载

四. Android源码下载 4.1     安装repo 在home目录下建立bin文件夹 $ mkdir ~/bin $ PATH=~/bin:$PATH 安装并更改权限 $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 4.2     初始化repo 创建工作目录(存放源码) $ mkdir Android4.1 $ cd Android4.1

Android介绍以及源码编译--编译Android源码

一. 编译Android源码 5.1     初始化环境变量 1 $ source build/envsetup.sh 2 $ . build/envsetup.sh 3 $ lunch full-eng 5.2     编译Android系统 1 $ make –jN 其中N参数代表你计算机的线程参数,数字越大,编译速度越快,但是要看你计算机支持到什么地步. 我使用的是 $ make –j8 经过几天的编译,终于看见胜利的曙光:system.img成功生成! 5.3     运行模拟器 编译成

编译android源码报错:build/envsetup.sh: 1: Syntax error:

编译android源码时报错: build/envsetup.sh: 1: Syntax error: "(" unexpected 解决方法: 执行$sudo dpkg-reconfigure dash命令,并选择"否" 编译android源码报错:build/envsetup.sh: 1: Syntax error:

分享编译Android源码的全过程

通过参考网上的相关资料,我编译Android源码的步骤如下: 1 我的系统是Ubuntu 8.04 2 系统上必须安装以下工具(摘自网上的资料):  sudo apt-get install build-essential sudo apt-get install make  sudo apt-get install gcc  sudo apt-get install g++  sudo apt-get install libc6-dev  sudo apt-get install flex