mac 10.9 android kernel编译 elf,如何在 Ubuntu 9.10 下编译 Android 源码[简单可靠]

==========================================如何在 Ubuntu 9.10 下编译 Android 源码==========================================问题:Ubuntu 升级为 9.10, 后 Android 源码无法编译通过怎么办?原因:    这是 gcc 和 g++ 的版本太高导致的问题。Ubuntu 9.04 是4.3, 而 9.10 是4.4.    GCC 在 4.4 时把部份 string 相关的 function 回传值的 type 改变了...    char* 改成了 const char*...    也因此让一堆原本不是针对最新的gcc来写的code都无法编译成功。解决方案:使用旧版本的 gcc 和 g++ 。    1、先下载 gcc-4.3 g++-4.3:          apt-get install gcc-4.3 g++-4.3     2、删除原有的连接:          sudo rm /usr/bin/gcc

sudo rm /usr/bin/g++     3、添加新的连接:          sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc

sudo ln -s /usr/bin/g++-4.3 /usr/bin/g++

==================================================问题:Ubuntu 中没有 Android 要求的 jdk 1.5, 怎么办?解决方案一:安装 jdk 1.5。    方法1:从官方网站上下载 jdk 1.5,安装。    方法2:在 /etc/apt/sources.list 中添加 9.04 的源:

deb http://mirrors.163.com/ubuntu/ jaunty main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ jaunty-updates main restricted universe multiverse

更新源,安装 jdk 1.5。

解决方案二:如果您已经安装了 jdk 1.6, 请修改 /build/core/make.mk。(注,如果是 2.0 版本的源码,请修改 /build/core/main.mk)    在文件中搜索并分别把: java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.5[\. "$$]')     两行改成:          java_version := $(shell java -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')

javac_version := $(shell javac -version 2>&1 | head -n 1 | grep '[ "]1\.6[\. "$$]')

即可。    如果你有其它的开发要使用 jdk 1.6 的话,采用解决方案二是一种不错的选择,它可以避免你在两个 jdk 之间切换。==================================================以上方案,在 Ubuntu 9.10 + Android 2.1 环境中测试通过。即正确编译 Android 2.1 源码通过。注意:    1、对于第二个问题的 解决方案二 请谨慎采用。由于修改了 Android 原配置文件,对编译结果的影响未知,建议经详细测试后再用于商业目的编译(要不然,出了问题可别找我哈,呵呵)。    不过到目前为止,我编译出来的结果文件,没有出现任何异常。如果大家发现了问题,不妨回复分享一下。    2、如果需要 make sdk,则需要把 javadoc 设置为 1.5 的。         安装 javadoc 1.5版本,然后 sudo update-alternatives --config javadoc,选择 1.5 版本。         不然会出现以下错误: javadoc: 错误 - 在 doclet 类 DroidDoc 中,方法 start 已抛出异常 java.lang.reflect.InvocationTargetException

com.sun.tools.javac.code.Symbol$CompletionFailure: 未找到 sun.util.resources.OpenListResourceBundle 的类文件

1 错误

make: *** [out/target/common/docs/services-timestamp] 错误 45 ==================================================解决了以上两个问题之后,按照 Android 官方文档的方法即可顺利进行编译。分享经验,分享快乐!放心享受 Ubuntu 9.10 带给您的惊喜吧! 作者:曾赛日期:2010-02-25

====================

补充:常见问题解决方案

====================

1.找不到PRODUCT_POLICY

frameworks/policies/base/PolicyConfig.mk:22: *** No module defined for the given PRODUCT_POLICY (android.policy_phone).

解法: 修改build/tools/findleaves.sh的89行:

#find "${@:0:$nargs}" $findargs -type f -name "$filename" -print |

find "${@:1:$nargs-1}" $findargs -type f -name "$filename" -print |

2. fprintf未定义

frameworks/base/tools/aidl/AST.cpp:10: error: 'fprintf' was not declared in

this scope

解法:apt-get install gcc-4.3 g++-4.3,并重新ln gcc 和g++到 gcc-4.3 和g++-4.3

3.安装sun- java6-jdk,并且在环境变量中设置:

export JAVA_HOME=/usr/lib/jvm/java-6-sun/

export ANDROID_JAVA_HOME=$JAVA_HOME

这部分摘自:http://embeddeder.spaces.live.com/Blog/cns!8006E36532087D51!213.entry

I notice that there is quiet a few people around that are having issues building the source, due to the lack on Sun-Java5 (1.5 JDK) in the Ubuntu Repositories.In a hope it will encourage more developers, I'll post the following, which will build a full eclair system, on a new Ubuntu 9.10 x64 system.$ mkdir ~/mydroid

$ mkdir mydroid/java5-packages

$ cd ~mydroid/java5-packages

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jre_1.5.0-18-1_all.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-bin_1.5.0-18-1_amd64.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-demo_1.5.0-18-1_amd64.deb

$ wget http://mirror.pacific.net.au/linux/ubuntu/pool/multiverse/s/sun-java5/sun-java5-jdk_1.5.0-18-1_amd64.deb

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev java-common unixodbc

$ sudo dpkg -i --ignore-depends=sun-java5-bin sun-java5-jre_1.5.0-18-1_all.deb

$ sudo dpkg -i sun-java5-bin_1.5.0-18-1_amd64.deb

$ sudo dpkg -i --ignore-depends=sun-java5-jdk sun-java5-demo_1.5.0-18-1_amd64.deb

$ sudo dpkg -i sun-java5-jdk_1.5.0-18-1_amd64.deb

$ sudo update-java-alternatives -s java-1.5.0-sun

$ cd ..

$ wget http://android.git.kernel.org/repo

$ sudo mv repo /usr/bin/

$ chmod a+x /usr/bin/repo

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

$ rep sync

$ cd external/webkit/

$ git cherry-pick 18342a41ab72e2c21931afaaab6f1b9bdbedb9fa

$ cd ../../

$ wget --referer=http://developer.htc.com/google-io-device.html http://member.america.htc.com/download/RomCode/ADP/signed-google_ion-ota-14721.zip?

$ cd vendor/htc/sapphire-open/

$ ./unzip-files.sh

$ cd ../../../

$ . build/envsetup.sh

$ lunch aosp_sapphire_us-eng

$ make

That's it? Ok, So it was a lot... Hope this helps someone get the 1.5 JDK on their Ubuntu system (and build eclair)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值