Android源码编译环境搭建

linux环境Android源码编译环境搭建
java

    以前编译系统apk(区别通常apk具备系统签名)、系统库、镜像都是在别人的搭建好的服务器上进行操做的,虽然从事android移植工做快两年了,但还没本身动手搭建一个android源码编译环境,废话很少说,go(HISI芯片,源码是Hisi提供的)。 linux

1、安装linux操做系统 android

    能够本身的电脑上装一个虚拟机或者双系统,建议用另一台电脑作服务器,方便之后的工做。linux操做系统安装方式有不少,下面介绍几种经常使用的安装方法。
    1.用光盘安装(最简单)
    2.linux镜像+wubi.exe(网上资料不少)
         首先,空出一个盘符(如F盘),将下载的ubuntu-12.04-desktop-i386.iso单独放在另外一个盘如(D盘),从D盘里的镜像中解压出 wubi.exe,并将ubuntu-12.04-desktop-i386.iso和 wubi.exe放在同一个文件夹下用英文命名(如ubuntu-12.04),而后双击 wubi.exe会安装而不会再去下载镜像,安装过程当中让你选择盘符时选择想要安装盘如F盘。         
    3.使用u盘进行安装(博主推荐)
    http://blog.csdn.net/xiazdong/article/details/7523331 git

注意:安装的时候有install和install_server两个选项,server是不带desk无桌面版本,安装的时候选install就好了 shell

2、搭建编译环境(服务、环境变量等) ubuntu

    因为博主装的是linux_server无界面操做系统,而后经过网上资料查询到装了一个带有界面GNOME(侏儒版本)sudo apt-get install gdm(侏儒版功能不多)
    在装侏儒以后发现没法启动终端,经过网上的方法:alt-f2 而后输入xterm,就能够打开终端了。
    查看是安装了多少位的系统能够经过 getconf LONG_BIT(最好是装64位系统,开始装32位编译的时候各类问题)


安装以后执行下列步骤:
vim

    步骤1:添加root权限
        在新系统安装以后是没有root用户的,咱们须要经过sudo passwd root来添加root用户并赋予初始密码。 安全

    步骤2:安装SSH服务 bash

        SSH服务(TCP端口号22,secure shell),安全的命令解释器,为客户提供安全的shell环境,用于远程管理。
        SSH基于公钥加密(非对称加密)技术: 数据加密传输; 客户端和服务器的身份验证;
        公钥 和 私钥   是成对生成的,这两个密钥互不相同,两个密钥能够互相加密和解密;
        不能根据一个密钥而推算出另一个密钥;
        公钥对外公开,私钥只有私钥的持有人才知道;
        sudo apt-get install ssh
        
    

    步骤3:配置samba 服务器

    SMB(Server Message Block 信息服务块)协议,是一种在局域网上共享文件夹和打印机的一种通讯协议,它为局域网内不一样计算机提供文件以及打印机等资源的共享服务。

    安装Samba
    $sudo apt-get install samba smbfs samba-common smbclient
    建立Samba配置文件
    1. 保存现有的配置文件
    $ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
    2. 打开现有的文件
    $ sudo vim /etc/samba/smb.conf
    在 smb.conf 最后添加
[share]
path = /home/share
available = yes
browseable = yes
public = yes
writable = yes
(注意: 上面的设置中,username 换成你的用户名, 若是在前面有“#”,须要先把它去掉)
    建立samba用户
    $ sudo smbpasswd -a USERNAME (USERNAME 换成你的用户名)
    重启Samba服务
    $ sudo /etc/init.d/smbd reload (修改过 smb.conf 的话要执行一次)
    $ sudo /etc/init.d/smbd restart
   最后也是最重要的一点,必定要记得chmod一下home/share目录的权限,要不登录不进去,会报网络权限不够

    骤4: 安装JDK环境         
    从官网上下载一个linux_64位JDK版本, http://download.oracle.com/otn-pub/java/jdk/6u38-b05/jdk-6u38-linux-x64.bin?AuthParam=1382075406_61d8d0910661adb3a7ae893a841380dc  下载连接地址
    1.创一个目录用来存放jdk
    mkdir /usr/local/java
    2.把jdk-6u38-linux-x64.bin拷贝到目录下而后执行安装
    ./usr/local/java/jdk-6u38-linux-x64.bin
    3.配置环境变量
    vi /etc/profile 把下面属性添加到最后一行

  #set java environment
export JAVA_HOME=/usr/local/java/jdk1.6.0_38
export JRE_HOME=/usr/local/java/jdk1.6.0_38/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH

    4.source /etc/profile 从新加载环境变量
    5.查看java环境是否配置成功

        java -version

    步骤5:配置交叉工具链
          方法1:直接按照hisi的文档,执行他们提供的脚本一步步来
          (1)安装依赖包         

$ sudo apt-get install git-core gnupg flex bison gperf \
build-essential zip curl zlib1g-dev libc6-dev \
lib32ncurses5-dev ia32-libs x11proto-core-dev \
libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos
              ( 2)确保服务器上的shell是bash,若是服务器上的shell不是bash,则执行下面操做
                     $ cd /bin
                     $ rm –f sh
                     $ ln –s /bin/bash /bin/sh
        (3)切换至root用户后,在交叉工具链安装目录包下执行命令:
          ./cross.install
        (4)退出服务器登陆,从新登陆服务器
        
        (5)最后一步检测, 输入“arm-hisiv200-linux-”后按 tab 键,若是能自动将命令补齐,则说明安装成功。
            若是没法自动补齐,经过下面命令确认环境变量是否正确:
            echo $PATH 若是不正确请用 root 用户编辑/etc/profile 文件:
            sudo vi /etc/profile 添加以下语句:
            export PATH="/home/root/bin/x86-arm/arm-hisiv200-linux/target/bin:$PATH"

            

        方法2:其余几个步骤和上面差很少,就是不用执行hisi提供的脚本,本身实现脚本里面操做

        (1)解压工具链包,到自定义目录(/usr/local/java/)下面(工具链包hisi有提供)
                

        (2)配置环境变量
             vi /etc/profile/
             在最后一行添加上export PATH=/usr/local/java/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
        (3)从新装载环境变量
             source /etc/profile
        (4)打印$PATH查看下环境是否配好 

            echo $PATH

3、在编译过程当中出现的问题

      (1)lunch的时候出现

root@ubuntu:/home/ipanel/zhoulc/Android_4.0_JiuLian# lunch full_godbox-eng The program 'make' is currently not installed. You can install it by typing: apt-get install make ** Don't have a product spec for: 'full_godbox' ** Do you have the right repo manifest?
        直接执行:apt-get install make

      

      (2)lunch的时候/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: No such file or directory错误

         解决方法:
            
安装如下 依赖库才能编译android 和uboot和kernel(其实以前安装过,不过没注意失败了:请看步骤5方法1)
            
sudo aptitude install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev (成功)
            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 (失败)

           失败的时候出现了会报下面的错误(很是头疼,找了很久才找到)          

 root@ubuntu64:/home/zhangbin# root@ubuntu64:/home/zhangbin# sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos Reading package lists... Done Building dependency tree Reading state information... Done Note, selecting 'lib32z1-dev' instead of 'lib32z-dev' Package lib32readline5-dev is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source However the following packages replace it: lib32readline-gplv2-dev
    而后执行下面的命令就能够解决找不到/bin/bash: prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/arm-linux-androideabi-gcc: No such file or directory的问题了

    root@ubuntu64:/home/zhangbin# sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev  lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos

    

     (3)插曲在操做过程当中不当心弄坏了环境变量致使root全部命令不能使用
        如何恢复linux环境变量

        这主要是路径问题,先查看$PATH变量的设置。
                echo $PATH
                    里面的格式是xxx:xxx:xxx:xxx
                    这应该没包含/usr/bin这个路径。
                    执行下面命令就能够将这个路径包含进去:
                    export PATH=/usr/bin/:$PATH 这样就能够用root操做命令了。

                而后vi 把/etc/profile 改回来

    (4)编译错误   

     Install: out/host/linux-x86/bin/monkeyrunner
    host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp
    <command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
    <built-in>:0:0: note: this is the location of the previous definition
    cc1plus: all warnings being treated as errors
    解决方法: vi ./build/core/combo/HOST_linux-x86.mk
    把 HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0改为
     HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

    (5)编译错误
    /bin/bash: xmllint: command not found
    方法:sudo apt-get  install libxml2-utils

     /bin/bash: xsltproc: command not found
    方法:sudo apt-get install xsltproc


最后附送两份文档
    因为博主没有按文档一步步来操做,因此搭建过程当中出现了各类各样的错误,有文档仍是好帮手啊。本身动手亲自作了,才知道好多细节问题要注意,最大的收获仍是属性了linux的环境和vi操做。
    ubuntu10.04配置手册.pdf+Android SDK 开发指南.pdf.rar

相关文章
相关标签/搜索