在RH系列linux上编译android2.3(gingerbread)的过程如下:

官方源码及ubuntu编译过程在(http://source.android.com/source/index.html)。

前提:最好用主机编译,虚拟机的话内存越大越好,最好不低于2G,硬盘40G以上,cpu设定2个以上。即使这样也经常出现虚拟机失去反应导致崩溃。

android2.2以前默认用32位主机和jdk5,  2.3以后默认用64为主机和jdk6。 网上有说通过修订源码可解决此类问题,但是对源码的修改要尽量少。

本次使用的主机是Red Hat Enterprise Linux Server release 5.7 (64 bit)

可以预先安装一些工具如:jdk6,git-core,zip,curl gnupg flex bison gperf 等。剩下的库可以先不安装,编译的时候碰到再一次安装,具体的库参见附录的问题解决情况。

#####################################################

然后下载源码,时间较长,如果有源码可跳过此步,另外如果想要加快下载速度可以把url中的https替换成http  (命令行和manifest中),另外注意源码路径跟2.2之前有变,以官网最新为准。

需要使用curl,repo和git。

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo  #用curl下载repo工具

chmod a+x ~/bin/repo

repo init -u https://android.googlesource.com/platform/manifest -b gingerbread  #初始化repo 下载gingerbread代码,没有b则下载主分支最新代码,应该是android4.x的

repo sync   #正是下载源代码。

#######################################################

然后开始编译。

设置环境变量:

export USE_CCACHE=1 #启用编译缓存,多次编译可加速

进入源码根目录。执行

source build/envsetup.sh #增加lunch,m等新的命令

lunch full-eng  #设定机型,默认是模拟器,全编译,开发版。无参启动查看并选择界面。

make -j4   #四个线程编译平台镜像,一般为cpu个数的1~2倍个线程,目标在out/target/product/generic目录下,此过程会删除sdk。

make -j4 sdk #编译sdk,目标在out/host/linux-86/sdk目录下,此过程会编译镜像。

在此过程会遇到许多问题,主要是库依赖问题,主要问题见下面.

##########################################################

GLIBC_2.11 not found

该问题是因为android用了eglibc2.11代替了glibc,eglibc兼容libc,但更加优化,我们可以编译eglibc(没有成功),或者尝试编译glibc2.11(没有成功)。

不过临时有更加简单的方法,安卓的gcc降级,如下:

prebuilt/linux-x86/toolchain/下arm-eabi-4.4.0 改为 arm-eabi-4.4.3

undefined reference to `typeinfo for android::SortedVectorImpl'

该问题是android根据后缀名去确定文件类型选用编译工具导致出错。解决办法如下:

修订system/media/opensles/libopensles/IAndroidEffect.c为cpp,并修订其mk文件

剩下的为依赖库安装 (直接用yum联网安装,安装的时候要注意,有的yum配置默认只安装x86_64的,可以通过后缀强制安装i386或者i686的):

stubs-32.h装glic-devel.i686

libz.so装libstdc++-devel.i686

lz装zlib-devel.i686

realine装readline-devel.i686

ncurse装ncurse-devel.i686

X11装libX11-devel.i686

GL装 mesa-libGL-devel.i686

#############################################################

编译完成后需要把$SDK下的tools和platform-tools都加入PATH路径,否则不能创建avd。模拟器也是一片漆黑。

然后执行android list查看api等级和创建的avd,目前avd为空。

android create avd -t 1 -n myavd #创建名字为myavd,1表示列出的第一个platfrom,也就是android-2.3.3

emulator -avd myavd 启动模拟器。

至此模拟器成功运行起来。

跑模拟器要在图形界面下~~~

RH系列linux上编译android2.3(gingerbread)相关推荐

  1. linux编译aborted,Ubuntu Linux上编译kernel出错__stack_chk_fail

    Ubuntu Linux上编译kernel出错__stack_chk_fail 发布时间:2008-02-06 00:02:18来源:红联作者:SMuonon init/built-in.o: In ...

  2. 在linux上编译错误,Daemontools 在 Linux上编译错误解决

    在Linux上编译daemontools出现错误 执行install出现 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .t ...

  3. linux编译时开启宏,【spec】Linux上编译安装的spec文件中的常用路径以及宏变量

    我们在Linux上利用 rpmbuild 构建 rpm 安装包时,通过命令rpm --showrc 查看实现代码,另外直接通过 rpm --eval "%{macro}"来查看具体 ...

  4. printf如何消后续0_Hello World背后的故事:如何在Linux上编译C语言程序

    欢迎访问我的网站查看原文: https://lulaoshi.info/blog/2020/05/31/compile-c-hello-world-on-linux.html​lulaoshi.inf ...

  5. 在Windows和Linux上编译gRPC源码操作步骤(C++)

    gRPC最新发布版本为v1.23.0,下面以此版本为例说明在Windows和Linux下编译过程. Windows7/10 vs2103编译gRPC源码操作步骤: 1. 需要本机已安装Git.CMak ...

  6. linux 64 32 编译支持,在64位linux上编译32位程序 for i386 intel

    编辑中 # ld -V GNU ld version 2.15.92.0.2 20040927 Supported emulations: elf_x86_64 elf_i386 i386linux ...

  7. 64位Linux上编译32位软件

    问题:我的软件是运行在32位环境下的,原来也是在CentOS 6.3 32位上编译,运行都是没有问题的: 最近CentOS 7出来了,但是只有x86_64的,我的任务就是将我的软件移植到64位的Cen ...

  8. 在Linux上编译dotnet cli的源代码生成.NET Core SDK的安装包

    .NET 的开源,有了更多的DIY乐趣.这篇博文记录一下在新安装的 Linux Ubuntu 14.04 上通过自己动手编译 dotnet cli 的源代码生成 .net core sdk 的 deb ...

  9. kaldi在linux上编译,Kaldi的编译过程

    目录 本文介绍Kaldi的编译过程. 在Windows下编译 不建议在Windows下编译. configure脚本是怎么工作的 configure脚本有很多参数,其中一种用法是: ./configu ...

最新文章

  1. [转]软件项目版本号的命名规则及格式
  2. 信令风暴研究现状总结
  3. Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转
  4. 一段话系列-Java是否是解释执行语言?
  5. android studio gradle 学习,学习Android Studio里的Gradle
  6. AngularJS中的表达式
  7. Android studio 报错:Manifest merger failed xxx
  8. 计算机应用基础模块2客观题答案 文档,计算机应用基础网上形考答案模块2Word2010文字处理系统客观题答案.doc...
  9. centos7安装samba遇到的问题
  10. python基础学习笔记4--抽象
  11. string类和标准模板库
  12. python需要在linux上运行,在linux上运行python的方法
  13. 磁测仪高斯计与特斯拉计、磁通计的区别
  14. 13、threshold函数
  15. java8 时间加一秒_都9012了,Java8中的日期时间API你还没有掌握?
  16. 基于springboot的智能美食点餐配送系统
  17. 方便的视频播放器-饺子播放器
  18. 磊科linux无线网卡驱动安装步骤,磊科NW336无线网卡驱动程序安装步骤
  19. 苹果AppStore应用商店生存之道:国内iOS开发者创业经验分享(三)
  20. 放大电路的分析方法2:图解法

热门文章

  1. python国防_Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算...
  2. 如何升级jdk_简述面试常见问题的锁升级与锁优化
  3. android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
  4. 后缀数组 + Hash + 二分 or Hash + 二分 + 双指针 求 LCP ---- 2017icpc 青岛 J Suffix (假题!!)
  5. java 英文字符 字节_3、在JAVA语言中,每个英文字符占 个字节,每个中文汉字占( )个字节。...
  6. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★
  7. dpi shell命令 安卓_android 中 dumpsys 命令使用
  8. 在java中建个jsp文件_第一个jsp页面
  9. linux 0.01内核分析与操作系统设计 pdf,《Linux 0.01内核分析与操作系统设计——创造你自己的操作系统》...
  10. java 清空一个list数据库_java – JPA EntityManager删除数据库中的所有记录