编译Android系统源码和内核源码

本文详细记录了编译Android系统源码和内核源码的过程,包括遇到的问题及解决方案。首先,介绍了编译Android系统源码需要的64位Ubuntu系统,以及在编译过程中遇到的32位兼容性问题、源码下载问题等,并提供了相关资源链接。接着,讲述了编译内核源码时的步骤,包括下载、配置、编译和启动模拟器时的注意事项,特别是针对不同Android版本的内核配置差异。最后,作者强调了解决问题的决心和耐心在编译过程中的重要性,并分享了所使用的资源链接。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

好长时间没有写blog了,之所以没有写,主要还是工作上的事,发现最近的脑子不够用了,今天写点什么呢?就把我之前编译Android系统源码和内核源码的过程记录一下,因为这个过程真的是受益匪浅,看重的不是结果,主要是过程,在这个过程中,我感觉最大的收获就是学习的耐心和毅力,因为在这个过程中那个问题就像是雨点似的天天打在你的脸上,虽然现在网上有很多文章介绍怎么去操作,但是我说句真心话,那些只能提供参考,因为你的工作环境毕竟和他不一样,所以等你按照他的步骤去操作的时候还是会遇到很多问题,当然我写这篇文章也不是说我的方法就是一定可以的,我只能说我是成功了,所以我只是想记录一下,以后可以进行翻阅查看,主要的还是要看自己的毅力和解决问题的能力了,好了不多说了,说正事吧~~


首先我们来看一下编译Android系统源码

第一:我们知道Android系统是基于Linux开发的,所以我们想编译Android系统源码的话,就必须有一个Linux系统,这里我使用了Ubuntu 64位的系统,这个镜像文件的下载地址是:

http://pan.baidu.com/s/1c0eUSYc

安装Ubuntu系统不用说了吧,这种问题网上的资料多得很,因为篇幅可能很长,所以如果真的需要的话,请留言~~


问题一:至于我为什么要使用64位系统,因为在后面我会遇到一个问题,就是我第一次安装的是32位的系统,结果在编译的过程中遇到一个问题就是:

ERROR: prebuilts/tools/gcc-sdk/../../gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/bin/x86_64-linux-ar only run on 64-bit linux

编译不通过的,我就在网上找答案,下面的这篇文章就是说怎么解决上的问题,主要就是修改一些指定的文件

http://blog.sina.com.cn/s/blog_76dbbd7e01018cm5.html

但是很悲剧的是:我按照他的方法操作,并没有成功,那怎么办呢?我最后选择了重装了一个64位的系统,但是这次就没有用虚拟机了,直接安装到电脑中的。


问题二:安装的时候我先后卸载在安装系统有好几次,主要原因是第一次编译没经验,开始的时候就分配了20G的空间,结果编译的时候傻了,完全不够,所以我直截了当将电脑的200G的空间都分配出去了


那么安装系统完之后,还有一个问题,当我再去使用同一个方式去下载Android源码的时候,发现总是连接不上了,感觉Google退出中国了,源码也很难下到了,中间只有大约一个月的时间,就不可以下载了,好假,尝试过各种方法,我还买VPN,结果还是不行,那么怎么办呢?之前是有源码的,但是在虚拟机中,这时候就需要将虚拟机中的源码拷贝出来了,那么怎么从虚拟机中拷贝文件呢?这个很简单的,我用的VM的,他能够设置共享文件夹(具体方法可以搜索一下),但是又有一个问题来了,当时在虚拟机中下载的是Android4.4源码,大约有18G,我就尝试拷贝了,结果发现电脑最好拷贝死机了,主要是因为小文件太多了,大约有60万个,电脑配置也不好,所以尝试了几次都是死机了,那拷贝不出来怎么办呢?问题都是得解决的,突然想到了压缩一下在拷贝:

http://blog.csdn.net/jiangwei0910410003/article/details/37997899

通过上面的一篇文章中,压缩拷贝,结果发现效果很不错,而且压缩也是很快的,这下拷贝就顺利了

至此我们解决了系统问题和源码问题


注意:这里所说的源码问题不是指下载源码的问题,我会在最后面说一下现在如何能够得到相应的Android源码,反正从google上去下载我是不相信了。所以我提供了我已经下载好并且打成压缩包的连接,

http://pan.baidu.com/s/1mgoNVGs


只需要进行解压即可,关于解压缩Linux文件的话,可以查看另外一篇blog:

http://blog.csdn.net/jiangwei0910410003/article/details/37997899


上面的前奏都做好了,下面就来进行编译操作

第一步:在此之前还需要安装一些辅助工具,防止在安装的时候提示错误,当然我们可以现在不安装,等到安装的时候会提示相应的错误,到时候我只需要针对性的去安装,但是那样在编译的过程中会很不爽的,所以我还是先把这些工作做了

首先需要安装JDK,请转战另外的一篇Blog:

http://blog.csdn.net/jiangwei0910410003/article/details/37996723


当JDK安装完毕之后,下面就需要来安装一下编译库了:

sudo apt-get install gnupg flex bison gperf libsdl1.2-dev libesd0-dev 
sudo apt-get install libwxgtk2.6-dev squashfs-tools build-essential  
sudo apt-get install zlib1g-dev pngcrush schedtool ia32-libs libncurses5-dev

当然这些是必须要安装的,但是不是一定在编译的时候就没有问题,所以我们在编译的时候遇到什么问题的时候我们再去进行解决


今天在Ubuntu11.04(64位)编译Android2.3源码时,遇到各种各样的问题。不是缺这个,就是少那个。现把这些问题和解决方法罗列出来,供大家参考

普遍错误:
1.错误:
/usr/include/gnu/stubs.h:7:27: error: gnu/stubs-32.h: No such file or directory
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o] 错误 1
解决:
sudo apt-get install libc6-dev-i386 

2.错误:
make: *** [out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp] error 1
解决:
sudo apt-get install g++-multilib 

3.错误:
external/clearsilver/cgi/cgi.c:22: fatal error: zlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libneo_cgi_intermediates/cgi.o] Error 1
解决:
sudo apt-get install zlib1g-dev

4.错误:
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
解决:
sudo apt-get install lib32z1-dev

5.错误:
bison -d  -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127
解决:
sudo apt-get install bison

6.错误:
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决:
sudo apt-get install flex

7.错误:
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
解决:
sudo apt-get install lib32ncurses5-dev

8.错误:
prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55: fatal error: X11/Xlib.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main-common.o] Error 1
解决:
sudo apt-get install libx11-dev 

9.错误:
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 96.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/WebCore/css/CSSPropertyNames.h'
解决:
sudo apt-get install gperf
From:http://blog.csdn.net/offbye/article/details/6834285

以上的错误总结参考:
http://www.360doc.com/content/12/0602/16/6828497_215429231.shtml


致命错误: bits/predefs.h:没有那个文件或目录 编译中断

解决方法:
sudo apt-get install gcc-multilib

参考:
http://blog.sina.com.cn/s/blog_6340cd9c0101e42h.html

还有一个原因:

Ubuntu 11.10以上的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.3

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

参考:http://blog.163.com/zhaolin53636848@126/blog/static/4908666820121993234837/


总结错误:

1.错误

host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz
/usr/bin/ld: skipping incompatibl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值