Linux下android编译环境搭建

声明:之前也有好多人写过类似的文章,这篇文章是我根据两次不同的时间搭建编译环境后,进行整理,毕竟之前有很多jdk的源已经找不到了。在这个过程中,遇到了一些问题,虽然有的问题是一年多之前遇到的,但是也记录了下来,一起分享给大家

第一步:安装操作系统Ubuntu 12.04.4 LTS,尽管已经不是最新的系统了。

第二步:

安装jdk

Android4.x编译需要sun-jdk1.6版本,推荐 jdk-6u45-linux-x64.bin
y下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR
选择 : Java SE Development Kit 6u45
进入下载列表后,点击左上的Accept License Agreement , 下载 jdk-6u45-linux-x64.bin
1.下载完成后,将 jdk-6u45-linux-x64.bin copy到你想解压的目录下,

2.给文件加上可执行权限
luojian@luojian-Robin:~/java6$ chmod u+x jdk-6u45-linux-x64.bin (将其变成可执行文件)
3.执行jdk-6u22-linux-x64-rpm.bin
luojian@luojian-Robin:~/java6$ ./jdk-6u45-linux-x64.bin
直接用./ jdk-6u45-linux-x64.bin 执行 ,就会自动解压到当前目录下 ,JDK 1.6就等于安装完毕了。
接下来设置环境变量:

不要把环境变量配置在/etc/environment和/etc/profile文件中,这样配置的在有的ubuntu版本上会出现退出当前终端后不起作用的问题,在ubuntu12.04上我就遇到了此问题。
把环境变量配置在用户目录.bashrc文件中是最好的选择,在bashrc里添加:
export JAVA_HOME=/home/luojian/java6/jdk1.6.0_45
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

然后执行source .bashrc使配置生效即可。
由于ubuntu中可能会有默认的jdk,如openjdk。假如有openjdk的话,所以,为了使默认使用的是我们安装的jdk,还要进行如下工作。在终端输入:
sudo update-alternatives --install /usr/bin/java java ~/java6/jdk1.6.0_45/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac ~/java6/jdk1.6.0_45/bin/javac 300  
sudo update-alternatives --install /usr/bin/javap javap ~/java6/jdk1.6.0_45/bin/javap 300
PS:我的目录~是/home/luojian
 通过这一步将我们安装的jdk加入java选单。

然后执行以下命令设置默认的java JDK:
sudo update-alternatives --config java

查询当前JDK版本:
在终端执行: java -version


Android5.x编译需要openjdk1.7版本,可以通过源直接安装

$ sudo apt-get install openjdk-7-jre openjdk-7-jdk

$ sudo cp jdk-6u45-linux-x64.bin /usr/lib/jvm
$ cd /usr/lib/jvm
$ sudo chmod u+x jdk-6u45-linux-x64.bin
$ sudo ./jdk-6u45-linux-x64.bin
$ sudo ln -s jdk1.6.0_45 java-6-sun
 
设置环境变量,在用户主目录的.bashrc中添加以下内容,执行source .bashrc使配置生效即可
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
 配置多jdk版本$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-6-sun/bin/java 300
$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-6-sun/bin/javac 300 
$ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/java-6-sun/bin/javap 300然后执行以下命令设置默认的java JDK:
sudo update-alternatives --config java

第三步:

下载相关软件库

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dos2unix
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

注意:安装Ubuntu 12.04.2时,如果是Dell台式机,Vostro 的新型号,比如M11D等类型的机器执行命令后会提示:

$ sudo apt-get install git gnupg flex bison gperf build-essential \
>   zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
>   libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
>   libgl1-mesa-dev g++-multilib mingw32 tofrodos \
>   python-markdown libxml2-utils xsltproc zlib1g-dev:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
zip is already the newest version.
zip set to manually installed.
gnupg is already the newest version.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libgl1-mesa-glx:i386 : Depends: libglapi-mesa:i386 (= 8.0.4-0ubuntu0.6)
                        Recommends: libgl1-mesa-dri:i386 (>= 7.2)
E: Unable to correct problems, you have held broken packages.

提示信息说缺少依赖库无法安装libgl1-mesa-glx:i386,那么就不要安装这个库了,从上面的install列表中减去这个库

libgl1-mesa-glx:i386。如果强制安装了这个库会导致重启或关机后无法进入ubuntu问题,很严重。如果您不是这个

系统版本或者机器类型,请继续。如果也遇到了无法进入ubuntu系统的问题,请重装系统时不要安装这个库。

第四步:

配置Repo工具

$ cd ~
$ mkdir bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
在.bashrc中添加如下命令:
PATH=~/bin:$PATH


配置Gerrit帐户

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

常见错误:

如果要安装 vim, meld等工具,可能会遇到关于缺少"libc6-dev:i386"的错误

$ sudo apt-get install linux-libc-dev:i386

The following packages have unmet dependencies:

build-essential : Depends: gcc (>= 4:4.4.3) but it is not going to be installed
                   Depends: g++ (>= 4:4.4.3) but it is not going to be installed
g++-multilib : Depends: cpp (>= 4:4.6.3-1ubuntu5) but it is not going to be installed
                Depends: gcc-multilib (>= 4:4.6.3-1ubuntu5) but it is not going to be installed
                Depends: g++ (>= 4:4.6.3-1ubuntu5) but it is not going to be installed
                Depends: g++-4.6-multilib (>= 4.6.3-1~) but it is not going to be installed

$ sudo apt-get upgrade
$ sudo apt-get install build-essential
$ sudo apt-get install g++-multilib

/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [git-credential-store] Error 1

$ sudo apt-get install zlib1g-dev

* tclsh failed; using unoptimized loading
    MSGFMT    po/de.msg make[1]: *** [po/de.msg] Error 127

$ sudo apt-get install tcl

/bin/sh: 1: msgfmt: not found
make: *** [po/build/locale/da/LC_MESSAGES/git.mo] Error 127

$ sudo apt-get install gettext

git clone时候提示fatal: Unable to find remote helper for 'https'

$ sudo apt-get install curl libcurl3 libcurl3-dev
 
$ sudo apt-get install python-software-properties
 编译过程中提示:/usr/bin/ld: cannot find -luuid
检查/lib/i386-linux-gnu/ 目录中是否存在libuuid.so.1.3.0,如果存在执行
以下命令创建链接
$ sudo ln -sf /lib/i386-linux-gnu/libuuid.so.1.3.0 /lib/i386-linux-gnu/libuuid.so

如果不存在,则需要手动安装后,再执行以上命令创建链接
$ sudo apt-get install libuuid1:i386

error while loading shared libraries: liblzo2.so.2: cannot open shared object file: No such file or directory

需要安装32位的liblzo2-dev和liblzo2 

 
$ sudo apt-get install liblzo2-dev liblzo2-2:i386

/bin/bash: flex: command not found

$ sudo apt-get install flex

prebuilts/misc/linux-x86/bison/bison: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

$ sudo apt-get install g++-multilib

/bin/bash: zip: command not found

$ sudo apt-get install zip

找不到lzop

$ sudo apt-get install lzop

lzop: error while loading shared libraries: liblzo2.so.2 :no such file or directories.

在软件中心搜索liblzo2,找到liblzo2-2(2.06-1ubuntu0.1),并安装。

找不到dos2unix

在软件中心搜索dos2unix,找到dos2unix(5.3.1-1),并安装。
Can't locate Switch.pm in @INC (you may need to install the Switch module) (@INC contains: /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at external/webkit/Source/WebCore/make-hash-tools.pl line 23. 
sudo apt-get install libswitch-perl


你可能感兴趣的:(Linux环境搭建)