搭建android编译环境

1. 安装必备软件。

1.1 安装JDK6。

sudo apt-get install sun-java6-jdk

也可以自己安装,以64位jdk1.6.0_45版本为例,进入安装目录(/usr/local):

cd /usr/local

chmod a+x jdk-6u45-linux-x64.bin

./jdk-6u45-linux-x64.bin

在/etc/profile中增加JAVA环境变量:

export JAVA_HOME=/usr/local/jdk1.6.0_45

export JAVA_OPTS="-Xms256m -Xmx1024m"

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

. /etc/profile

1.2 安装其他软件。

sudo apt-get install bison gcc-multilib g++ lib32z1 lib32stdc++6 flex gperf libxml2-utils git 

2. 下载android源码。

TODO: 我的源码是以前下载的,这部分待追加。

3. 编译android源码。

以4.3编译为例:

cd android/4.3

. build/envsetup.sh

lunch aosp_arm-eng #aosp_arm-eng为模拟器选项,用户根据需要可以选择其他target

make -j4 #j后面数字为cpu内核数的1-2倍比较好

编译时可能遇到的错误及解决方案:

gcc: error trying to exec 'cc1plus': execvp:No such file or directory

sudo apt-get install g++

/bin/bash: prebuilts/misc/linux-x86/bison/bison: No such file or directory

sudo apt-get install bison

/i686-linux-gcc: No such file or directory 

sudo apt-get install gcc-multilib

libz.so.1: cannot open shared object file

sudo apt-get install lib32z1

libstdc++.so.6: cannot open shared object file

sudo apt-get install lib32stdc++6

/bin/bash: flex: command not found

sudo apt-get install flex

sh: 1: gperf: not found

sudo apt-get install gperf

gcc: error trying to exec 'cc1plus': execvp: No such file or directory

sudo apt-get install g++

/bin/bash: xmllint: command not found

sudo apt-get  install libxml2-utils

File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child

    raise child_exception

OSError: [Errno 2] No such file or directory

sudo apt-get  install git

4. 编译内核。

android内核与android源码要分开下载,我下载了goldfish用于生成模拟器。

export PATH=$(pwd)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH  #pwd为android源码根目录

export ARCH=arm

export SUBARCH=arm

export CROSS_COMPILE=arm-eabi-

make goldfish_armv7_defconfig #make goldfish_defconfig也能正常编译,但生成模拟器时黑屏

make -j4

5. 用自己编译的源码和内核生成模拟器。

将emulator命令加入PATH以便后面用到:

export PATH=$(pwd)/out/host/linux-x86/bin:$PATH

模拟器生成命令如下,其中goldfish即为kernel目录,我单独放在一个与android源码平级的目录下:

emulator -kernel ../goldfish/arch/arm/boot/zImage -sysdir out/target/product/generic -system system.img -data userdata.img -ramdisk ramdisk.img

编译时可能遇到的错误及解决方案:

Failed to load libGL.so
error libGL.so: cannot open shared object file: No such file or directory

sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

qemu: could not load initrd 'ramdisk'

TODO: 网上找到的修改out/target/product/generic和ramdisk.img权限我都试过,没用,所以我实际用到的命令是:

emulator -kernel ../goldfish/arch/arm/boot/zImage -sysdir out/target/product/generic -system system.img -data userdata.img

成功运行能看到android启动界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值