搜档网
当前位置:搜档网 › 安卓系统源码编译

安卓系统源码编译

安卓系统源码编译
安卓系统源码编译

安卓源码编译

1、编译环境的搭建

操作系统推荐安装64位的ubuntu10.04,其他版本的ubuntu也可以安装,但是可能出现一些莫名其妙的Bug。

系统安装结束之后,还需要安装一些编译源码需要的工具和依赖包。具体内容如下:确认下列软件安装成功并且版本号正确:

1.1 gcc4.4,而不是gcc4.6,如果是4.6,需要安装gcc4.4,命令如下:

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

cd /usr/bin

ls -l gcc*

sudo mv gcc gcc.bak

sudo ln -s gcc-4.4 gcc

ls -l g++*

sudo mv g++ g++.bak

sudo ln -s g++-4.4 g++

gcc -v

g++ -v

1.2 python

2.5-2.7,ubuntu10.04版本,默认的python版本是2.6。

1.3 JDK版本是1.6.0,而不是openJDK,

1.4 安装git sudo apt-get install git-core gnupg

1.5 一些依赖包的安装:

Ubuntu系统版本不同,所需要安装的依赖包也不同,具体情况如下所述:

u buntu 10.04(64位)

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \

zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \

x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \

libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \

libxml2-utils xsltproc

ubuntu 11.10(64位)

$ sudo apt-get install libx11-dev:i386

ubuntu 12.04(64位)

$ sudo apt-get install git-core gnupg flex bison gperf build-essential \

zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \

libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \

libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \

python-markdown libxml2-utils xsltproc zlib1g-dev:i386

$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

1.6 调试工具的安装sudo apt-get install valgrind

2、安卓系统源码编译

依次执行如下命令:

source build/envsetup.sh

lunch full-eng

make -j4

建议:最后一条命令使用make showcommands,这样可以显示编译命令,使得编译的时候,屏幕没有输出的时候,不会感觉无聊。

编译错误处理

错误⑴:You are attempting to build with the incorrect version of java.

解决方法:sudo update-alternatives --config java,同时最好确认下javac和jar命令。

错误⑵:make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]

错误1 make: *** 正在等待未完成的任务....

解决方法:修改源码目录下/build/core/combo/HOST_linux-x86.mk文件:

将以下语句

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

修改为

HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

错误⑶:

make:*** [out/host/linux-x86/obj/STATIC_LIBRARIES/libMesa_intermediates/src/glsl/linker.o] 错误1

解决方法:

gedit external/mesa3d/src/glsl/linker.cpp

在头文件段中,添加#include

错误⑷:

make:***[out/host/linux-x86/obj/STATIC_LIBRARIES/liboprofile_pp_intermediates/arrange_profil es.o]

解决方法:确认你使用的gcc和g++的4.4版本,而不是更高的版本。

错误⑸:

make: *** [out/target/common/obj/APPS/CtsVerifier_intermediates/classes-full-debug.jar]

解决方法:sudo update-alternatives --config javac,选择jdk1.6.0,而不是openjdk。

错误⑹:

make:***[out/target/common/obj/APPS/https://www.sodocs.net/doc/664777240.html,.no-core-tests-re s_intermediates / noproguard.classes-with-local.dex] Killed

解决方法:此问题是因为编译android4.0需要4GB的RAM或SWAP空间,而ubuntu默认的1GB的,所以,增加swap空间即可,执行命令如下:

sudo dd if=/dev/zero of=/boot/swapfile bs=1024 count=4194304

sudo mkswap -v1 /boot/swapfile

sudo swapon /boot/swapfile

free

sudo vi /etc/fstab

/boot/swapfile swap swap defaults 1 1

编译成功

编译成功之后,会在out/target/product/generic目录下面看到

system.img,ramdisk.img,userdata.img。但是我编译成功之后,在终端运行emulator命令,却提示:

No command 'emulator' found, did you mean:

Command 'qemulator' from package 'qemulator' (universe)

emulator: command not found

解决方法:

重新运行以下命令:

source build/envsetup.sh

lunch full-eng

3、安卓SDK编译

编译的步骤:

1、$ source build/envsetup.sh

2、$lunch sdk-eng

3、$make sdk

编译的最终结果:

没有其他错误的话,命令行会出现以下提示:

Docs droiddoc: out/target/common/docs/online-sdk

htmlDir not a directory: out/target/common/docs/gen

DroidDoc took 90 sec. to write docs to out/target/common/docs/online-sdk

Package SDK: out/host/linux-x86/sdk/android-sdk_eng.neo_linux-x86.zip

xxx@xxx:~/Android_Src$

这说明sdk编译也已经完成。

接下来就是要测试编译好的android系统了。

编译结果的最终输出路径为:

~/Android_Src/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86(这里出现的xxx为用户名,每个电脑都不一样的)

设置环境变量

vim .bashrc

PATH=$PATH:~/Android_Src/out/host/linux-x86/sdk/android-sdk_eng.xxx_linux-x86/tools 之后在命令行中输入./Android 就可以运行模拟器了。

相关主题