Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3168050
  • 博文数量: 685
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 5303
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-19 14:17
个人简介

文章分类

全部博文(685)

文章存档

2015年(116)

2014年(569)

分类: Android平台

2014-09-20 14:24:08

原文地址:http://blog.chinaunix.net/uid-26009923-id-4035398.html
1. 编译工具链
解压 tools 下的 
arm-linux-gcc-4.3.2.tgz  
arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 
到/opt/6410/android目录下
  1. cong@ubuntu:/opt/6410/android$ ls
  2. 4.3.2 arm-none-linux-gnueabi
2. 编uboot (板子是256M的nand)
用的编译器是在arm-linux-gcc-4.3.2中的
  1. cong@ubuntu:/work/an6410/uboot$ vi Makefile
  2.  161 CROSS_COMPILE =/opt/6410/android/4.3.2/bin/arm-none-linux-gnueabi-
  3.  162 export CROSS_COMPILE
  4. cong@ubuntu:/work/an6410/uboot$ make smdk6410_config
  5. Configuring for smdk6410 board...
  6. cong@ubuntu:/work/an6410/uboot$ make
生成 u-boot.bin
3.编译kernel
修改Makefile
  1. cong@ubuntu:/work/an6410/kernel$ vi Makefile
  2.  192 ARCH ?= arm
  3.  193 CROSS_COMPILE ?= /opt/6410/android/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
  4. make -j4

4. 编译android 
机子是 ubuntu 12.04LTS  64位,所以需要修改这几个Android.mk
4.1 按手册修改Android.mk
  1. ./external/clearsilver/cgi/Android.mk
  2. ./external/clearsilver/java-jni/Android.mk
  3. ./external/clearsilver/util/Android.mk
  4. ./external/clearsilver/cs/Android.mk
  5. 找到
  6. LOCAL_CFLAGS += -m32
  7. LOCAL_LDFLAGS += -m32
  8. 替换为
  9. LOCAL_CFLAGS += -m64
  10. LOCAL_LDFLAGS += -m64
  11. 记得保存文件。
  12. 第二步:
  13. 修改文件 ./build/core/main.mk
  14. 找到
  15. ifneq (i686,$(findstring i686,$(build_arch)))
  16. 替换为
  17. ifneq (64,$(findstring 64,$(build_arch)))
4.2 出错处理
a. 添加 -fpermissive
  1. frameworks/base/libs/utils/RefBase.cpp: In member function ‘void android::RefBase::weakref_type::trackMe(bool, bool):
  2. frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive]
解决方法:
frameworks/base/libs/utils/Android.mk
 60 LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive

b. 这个需要改javadoc
  1. Could not load 'clearsilver-jni'
  2. java.library.path = out/host/linux-x86/lib
  3. make: *** [out/target/common/docs/doc-comment-check-timestamp] Error 45
解决方法: 先是将默认工具链中的javadoc替换成jdk1.5的这个地方是可以编过去的.
但是在接下来的编译中还会出现错误
c. 终极大招
默认的工具链jdk1.6.0_23好像是32位的,所以需要替换为64位的,
下载jdk-6u35-linux-x64.bin,然后解压到android源码目录下
修改build-android
  1.   6 #export PATH=$PWD/jdk1.6.0_23/bin:$PATH
  2.   7 export PATH=$PWD/jdk1.6.0_35/bin:$PATH
d. 接下来就是一些小问题了
  1. prebuilt/linux-x86/sdl/include/SDL/SDL_syswm.h:55:22: fatal error: X11/Xlib.h: No such file or directory
  2. compilation terminated.
  3. make: *** [out/host/linux-x86/obj/EXECUTABLES/emulator_intermediates/android/main.o] Error 1
解决方法:
    sudo apt-get install libx11-dev

e. 将 -Werror去掉
  1. <command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
  2. <built-in>:0:0: note: this is the location of the previous definition
  3. cc1plus: all warnings being treated as errors
  4. make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
cong@ubuntu:/work/an6410/2.3.4$ vi frameworks/base
阅读(767) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~