您的位置:首页 > 移动开发 > Android开发

Android源码编译环境搭建

2016-02-16 16:27 507 查看

Android源码编译环境搭建

发表于2年前(2013-10-23 10:24)   

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

    之前编译系统apk(区别一般apk具有系统签名)、系统库、镜像都是在别人的搭建好的服务器上进行操作的,虽然从事android移植工作快两年了,但还没自己动手搭建一个android源码编译环境,废话不多说,go(HISI芯片,源码是Hisi提供的)。

一、安装linux操作系统

    可以自己的电脑上装一个虚拟机或者双系统,建议用另外一台电脑做服务器,方便以后的工作。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

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

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

    由于博主装的是linux_server无界面操作系统,然后通过网上资料查询到装了一个带有界面GNOME(侏儒版本)sudo apt-get install gdm(侏儒版功能很少)
    在装侏儒之后发现无法启动终端,通过网上的方法:alt-f2 然后输入xterm,就可以打开终端了。
    查看是安装了多少位的系统可以通过 getconf LONG_BIT(最好是装64位系统,开始装32位编译的时候各种问题)
安装之后执行下列步骤:

    步骤1:添加root权限

        在新系统安装之后是没有root用户的,我们需要通过sudo passwd root来添加root用户并赋予初始密码。

    步骤2:安装SSH服务

        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)安装依赖包

?
1
2
3
4
5
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

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

  (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 (失败)
           失败的时候出现了会报下面的错误(非常头疼,找了好久才找到)  

?
1
2
3
4
5
6
7
8
9
10
11
12
<b> 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<
/b
>


然后执行下面的命令就可以解决找不到/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

分享到: 2赞
声明:OSCHINA 博客文章版权属于作者,受法律保护。未经作者同意不得转载。

收起
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: