首页 > 系统相关 >如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核

如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核

时间:2023-08-11 16:07:09浏览次数:154  
标签:bin gcc 4.0 32 html 源码 plain copy view


一准备工作



 



1安装javasdk6

(1)从jdk官方网站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下载jdk-6u29-linux-i586.bin文件。

(2)执行jdk安装文件

 



[html]  view plain copy


1. $chmod a+x jdk-6u29-linux-i586.bin  
2. $jdk-6u29-linux-i586.bin


 

 

(3)配置jdk环境变量

 



[html]  view plain copy

1. $sudo vim /etc/profile


[html]  view plain copy


1. #JAVAEVIRENMENT  
2. exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29  
3. exportJRE_HOME=$JAVA_HOME/jre  
4. exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
5. exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH


 

保存后退出编辑,并重启系统。

2安装依赖包

 



[html]  view plain copy

1. $sudo apt-get install git-core gnupg flex bison gperf build-essential\  
2. zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\  
3. x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\  
4. libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\  
5. libxml2-utils

 

3用repo工具下载源码

(1)初始化repo

 



[html]  view plain copy


1. $cd ~  
2. $mkdir bin  
3. $curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo  
4. $chmod a+x ~/bin/repo  
5. $exportPATH=$PATH:~/bin(导出环境变量)


 

 

(2)下载android最新源码

 



[html]  view plain copy



1. $mkdir android  
2. $cd android  
3. $ repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.0.1_r1  
4. ...(输入用户名和邮箱名)  
5. $repo sync -j5  
6. ...(此处用5个线程开始下载源码,下载过程及其漫长,需要耐心等待)



 

 

二 编译源码



 



1开始编译

 



[html]  view plain copy

1. $source build/envsetup.sh  
2. includingdevice/samsung/maguro/vendorsetup.sh  
3.   
4. includingdevice/samsung/tuna/vendorsetup.sh  
5.   
6. includingdevice/ti/panda/vendorsetup.sh  
7.   
8. includingsdk/bash_completion/adb.bash  
9.   
10. $make-j4(此处用4个线程编译)

 

 

编译完成后,会看到类似的输出:

 



[html]  view plain copy


1. Targetramdisk:out/target/product/generic/ramdisk.img  
2. Targetuserdatafsimage:out/target/product/generic/userdata.img  
3. Installedfilelist:out/target/product/generic/installed-files.txt

 

 

2编译遇到的问题

编译错误:

 



[html]  view plain copy


1. <命令行>:0:0:错误:“_FORTIFY_SOURCE”重定义[-Werror]  
2.   
3. <built-in>:0:0:附注: 这是先前定义的位置  
4.   
5. cc1plus:所有的警告都被当作是错误  
6.   
7. make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]错误 1


 

 

原因:

因机器上的gcc版本过高,需替换成4.4.6重新进行编译。

解决方法:

1)安装4.4版本的gcc和g++

 

 



[html]  view plain copy


1. $ sudo apt-get install gcc-4.4  
2. $ sudo apt-get install g++-4.4

 

2)设置gcc版本,使gcc链接到gcc-4.4

 



[html]  view plain copy


1. $ ls -l /usr/bin/gcc*  
2.   
3. lrwxrwxrwx 1 root root      7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6  
4.   
5. -rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4  
6.   
7. -rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6  
8.   
9. $ cd /usr/bin  
10. $ sudo mv gcc gcc.bak  
11. $ sudo ln -s gcc-4.4 gcc


 

3)设置g++版本,使g++链接到g++-4.4

 



[html]  view plain copy


1. $ sudo mv g++ g++.bak  
2. $ sudo ln -s g++-4.4 g++

 

4)设置完毕后,重新进行编译即可

 

3从模拟器启动编译后的镜像文件

1)设置环境变量:

 



[html]  view plain copy

1. export PATH=~/android/out/host/linux-x86/bin:$PATH  
2.   
3. export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic

 

其中linux-x86/bin存放模拟器emulator工具,product/generic存在编译后的镜像文件。

 

2)启动模拟器

 



[html]  view plain copy


1. $emulator  
2.   
3. emulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)


 

 

启动后的截图:

 

三 编译androidgoldfish内核



 



1)进入android4.0.1源码目录,下载goldfish内核源码

 



[html]  view plain copy



    1. $ mkdir kernel  
    2. $ cd kernel  
    3. $ git clone http://android.googlesource.com/kernel/goldfish.git  
    4. $ cd goldfish  
    5. $ git branch -a  
    6. * (no branch)  
    7.   
    8.   master  
    9.   
    10. > origin/master  
    11.   
    12.   remotes/origin/android-goldfish-2.6.29  
    13.   
    14.   remotes/origin/master  
    15.   
    16. $ git checkout remotes/origin/android-goldfish-2.6.29



     

     

    2)修改Makefile

     



    [html]  view plain copy


    1. goldfish$ gedit Makefile


     

    修改

     



    [html]  view plain copy


    1. ARCH                     ?=$(SUBARCH)  
    2. CROSS_COMPILE ?=


     

     



    [html]  view plain copy


    1. ARCH                     ?=arm  
    2. CROSS_COMPILE ?=arm-eabi-

     

     

    3)导出交叉编译器目录为环境变量

    $ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

     

    4)编译内核

     



    [html]  view plain copy


    1. goldfish$ make goldfish_armv7_defconfig  
    2.   
    3. goldfish$ make

     

     

    编译完成后,可看到类似如下的输出:

     



    [html]  view plain copy

    1. OBJCOPY arch/arm/boot/zImage  
    2. Kernel: arch/arm/boot/zImage is ready


     

     

    5)从模拟器中启动内核镜像

     



    [html]  view plain copy


    1. $emulator  -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &

     

    启动模拟器后,可从Settings->System->AboutPhone中查看内核版本信息。

     

     

    标签:bin,gcc,4.0,32,html,源码,plain,copy,view
    From: https://blog.51cto.com/u_2198048/7048861

    相关文章

    • 直播源码连麦技术功能分享,你要的这里全有
      在直播源码的开发设计中,主播可以和观众进行连麦,可以给观众更直接的参与感,还能有利于提升直播平台用户活跃度和粘性。那么直播源码连麦技术是如何实现的呢?直播源码连麦功能流程图如下:一.需要连麦的观众发起连麦请求,进入连麦申请列表。二.主播从麦序中选择一名或多名观众进行连麦,从而......
    • Debug Assertion Failed! Program: C:\Windows\SYSTEM32\mfc140ud.dll
      新建C++ MFC项目多文本对话框的模板,运行出错。解决办法:这是由于DockControlBar(&m_wndToolBar);引起的异常。在头文件MainFrm.h中重新定义  CMFCToolBar m_wndToolBar; 类型DockControlBar(&m_wndToolBar)改为DockPane(&m_wndToolBar);再次运行就不会出错了。......
    • 【Hystrix技术指南】(7)故障切换的运作流程原理分析(含源码)
      推荐超值课程:点击获取背景介绍目前对于一些非核心操作,如增减库存后保存操作日志发送异步消息时(具体业务流程),一旦出现MQ服务异常时,会导致接口响应超时,因此可以考虑对非核心操作引入服务降级、服务隔离。Hystrix说明官方文档Hystrix是Netflix开源的一个容灾框架,解决当外部依......
    • 智慧医疗PACS源码 C/S架构 自主研发
      C/S架构,即Client/Server(客户机/服务器)架构,将运算任务合理分配到客户机端和服务器端,降低了整个系统的通信开销,可以充分利用两端硬件环境的优势。C/S架构的PACS系统中,客户机(医学影像显示工作站)需要安装应用程序。才能查询数据、调取影像。C/S架构常用在局域网内,因此信息安全性更高,由......
    • 合宙ESP32C3使用PlatformIO开发点亮ST7735S
      开发背景模块使用的合宙的ESP32-C3(经典款)购买连接COREESP32核心板是基于乐鑫ESP32-C3进行设计的一款核心板,尺寸仅有21mm*51mm,板边采用邮票孔设计,方便开发者在不同场景下的使用。核心板支持UART、GPIO、SPI、I2C、ADC、PWM等接口,可根据实际需要选择。屏幕使用的LuatOS屏......
    • RTSP/Onvif视频服务器LntonNVR(源码版)视频监控平台修改录像文件的存储位置的具体操作步
      LntonNVR是基于RTSP/Onvif协议接入的视频平台,具备视频直播监控、录像、检索与回看、存储、国标级联等视频能力,可支持将接入的视频流进行全平台、全终端的分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等。在应用上,LntonNVR可以用在智慧工厂、智慧工地、智慧园区、智慧港口等......
    • 国标GB28181视频平台LntonGBS(源码版)国标平台新增拉流超时配置的具体操作流程
      LntonGBS是一款基于公安部推出的安防主流协议(国标GB28181协议)的视频接入、处理及分发平台。它提供了一系列功能,包括视频直播监控、云端录像、云存储、检索回放、智能告警、语音对讲和平台级联等。通过支持国标GB28181协议,LntonGBS能够实现与各种符合该协议的视频设备的连接和交互。......
    • 国标GB28181视频云服务平台LntonGBS(源码)国标平台对接宇视SDK,多次点击录像回放出现崩溃
      LntonGBS是一款基于国标GB28181协议的视频云服务平台。通过该平台,可以实现设备接入并支持视频的实时监控直播、录像、语音对讲、云存储、告警、级联等功能。此外,LntonGBS还支持将接入的视频流进行全终端、全平台的分发,包括支持RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流分发。另......
    • 【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(上)
      推荐超值课程:点击获取前言介绍了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进行讲解下eureka的源码分析,由此应运而产生的本章节的内容。基本原理EurekaServer提......
    • 【Eureka技术指南】「SpringCloud」从源码层面让你认识Eureka工作流程和运作机制(下)
      推荐超值课程:点击获取原理回顾EurekaServer提供服务注册服务,各个节点启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。EurekaClient是一个Java客户端,用于简化与EurekaServer......