RH系列linux上编译android2.3(gingerbread)
在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)相关推荐
- 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 ...
- 在linux上编译错误,Daemontools 在 Linux上编译错误解决
在Linux上编译daemontools出现错误 执行install出现 /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .t ...
- linux编译时开启宏,【spec】Linux上编译安装的spec文件中的常用路径以及宏变量
我们在Linux上利用 rpmbuild 构建 rpm 安装包时,通过命令rpm --showrc 查看实现代码,另外直接通过 rpm --eval "%{macro}"来查看具体 ...
- printf如何消后续0_Hello World背后的故事:如何在Linux上编译C语言程序
欢迎访问我的网站查看原文: https://lulaoshi.info/blog/2020/05/31/compile-c-hello-world-on-linux.htmllulaoshi.inf ...
- 在Windows和Linux上编译gRPC源码操作步骤(C++)
gRPC最新发布版本为v1.23.0,下面以此版本为例说明在Windows和Linux下编译过程. Windows7/10 vs2103编译gRPC源码操作步骤: 1. 需要本机已安装Git.CMak ...
- 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 ...
- 64位Linux上编译32位软件
问题:我的软件是运行在32位环境下的,原来也是在CentOS 6.3 32位上编译,运行都是没有问题的: 最近CentOS 7出来了,但是只有x86_64的,我的任务就是将我的软件移植到64位的Cen ...
- 在Linux上编译dotnet cli的源代码生成.NET Core SDK的安装包
.NET 的开源,有了更多的DIY乐趣.这篇博文记录一下在新安装的 Linux Ubuntu 14.04 上通过自己动手编译 dotnet cli 的源代码生成 .net core sdk 的 deb ...
- kaldi在linux上编译,Kaldi的编译过程
目录 本文介绍Kaldi的编译过程. 在Windows下编译 不建议在Windows下编译. configure脚本是怎么工作的 configure脚本有很多参数,其中一种用法是: ./configu ...
最新文章
- [转]软件项目版本号的命名规则及格式
- 信令风暴研究现状总结
- Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转
- 一段话系列-Java是否是解释执行语言?
- android studio gradle 学习,学习Android Studio里的Gradle
- AngularJS中的表达式
- Android studio 报错:Manifest merger failed xxx
- 计算机应用基础模块2客观题答案 文档,计算机应用基础网上形考答案模块2Word2010文字处理系统客观题答案.doc...
- centos7安装samba遇到的问题
- python基础学习笔记4--抽象
- string类和标准模板库
- python需要在linux上运行,在linux上运行python的方法
- 磁测仪高斯计与特斯拉计、磁通计的区别
- 13、threshold函数
- java8 时间加一秒_都9012了,Java8中的日期时间API你还没有掌握?
- 基于springboot的智能美食点餐配送系统
- 方便的视频播放器-饺子播放器
- 磊科linux无线网卡驱动安装步骤,磊科NW336无线网卡驱动程序安装步骤
- 苹果AppStore应用商店生存之道:国内iOS开发者创业经验分享(三)
- 放大电路的分析方法2:图解法
热门文章
- python国防_Python+Excel数据分析实战:军事体能考核成绩评定(二)基本框架和年龄计算...
- 如何升级jdk_简述面试常见问题的锁升级与锁优化
- android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
- 后缀数组 + Hash + 二分 or Hash + 二分 + 双指针 求 LCP ---- 2017icpc 青岛 J Suffix (假题!!)
- java 英文字符 字节_3、在JAVA语言中,每个英文字符占 个字节,每个中文汉字占( )个字节。...
- 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★
- dpi shell命令 安卓_android 中 dumpsys 命令使用
- 在java中建个jsp文件_第一个jsp页面
- linux 0.01内核分析与操作系统设计 pdf,《Linux 0.01内核分析与操作系统设计——创造你自己的操作系统》...
- java 清空一个list数据库_java – JPA EntityManager删除数据库中的所有记录