ubuntu 14.04上面如何编译customer android 2.3
2014-10-31 18:25
363 查看
由于客户定制后的android2.3需要wine支持,而服务器不允许安装wine组件,所以只有在本机上搭建环境来编译android2.3了;有点悲催的是,新装的ubuntu机器是14.04 的,跟古老的android
2.3 相比,简直太新潮了,以至于很多组件不相容。所以现在只有遇到问题解决问题了。
一, 安装必要的文件
Install the required packages and tools.
$ sudo apt-get install git gnupg flex bison gperf build-essential \
libgmp10 autoconf automake libtool xmlto sqlite3\
zip curl libc6-dev libncurses5-dev x11proto-core-dev \
libglapi-mesa
libgl1-mesa-dri \
libx11-dev libreadline6-dev libgl1-mesa-glx \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev
$ sudo apt-get install xutils-dev binutils-dev
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-
gnu/libGL.so
$sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so.10 /usr/lib/libgmp.so
$sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so.10 /usr/lib/libgmp.so.3
二,首先编译kernle部分
/home/xxx/public/workspace/prebuilt/linux-x86_64/toolchain/linaro-201105-csr-build-armv7-vfpv3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.4/cc1:
error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
原因是: 14.04安装的libmpc 版本太高了,没有libmpc.so.2 只有 libmpc.so 和 libmpc.so.3
所以要安装合适的版本,另外 libmpc 依赖于其他的组件 GMP和MPFR。
所以需要安装合适版本的组件,我用的libmpc-0.9 的,安装后包含 libmpc.so.2
如果是libmpc-1.0+的,只包含 libmpc.so.3 和libmpc.so 了。
至于从何地址下载安装这些组件,我参考以下博文(从网上摘抄):
GCC编译需要GMP, MPFR, MPC这三个库,这三个包可以从下面的地址下载:
GMP: http://gmplib.org/
MPFR: http://www.mpfr.org/
MPC: http://www.multiprecision.org/index.php?prog=mpc&page=download
=========================================
需要把目前gcc-4.4.4升级到gcc-4.6.1,考虑到有多台的原因,做了一个脚本自动安装结合批量工具分发。
一、安装环境
系统版本:centos6.0X64
原GCC版本:gcc-4.4.4
新GCC版本:gcc-4.6.1
二、正式安装
1、下载安装的源码:
如下需要下载以下包:gcc-4.6.1.tar.bz2 gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2
下载地址如下:
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/{gmp-4.3.2.tar.bz2,mpc-0.8.1.tar.gz,mpfr-2.4.2.tar.bz2}
wget http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.bz2 即可!
2、解压安装:安装有先后顺序:GMP、MPFR、MPC、GCC
安装GMP: tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install
安装MPFR:
cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
安装MPC:
cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
安装GCC:
cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/
&&make &&make install
然后执行如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/
//这一步很关键,设置变量,不设置后面会报错。
make && make install
安装完毕即可!然后做一个链接就可以使用GCC了
mkdir -p /data/backup/`date +%Y%m%d`
mv /usr/bin/{gcc,g++} /data/backup/`date +%Y%m%d`
新建软链接:
ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
三、测试GCC
直接输入gcc -v 可以查看到gcc 版本为4.6.1和相关的编译参数就ok了!附上一个最简单的安装脚本:
#!/bin/sh
##auto make install gcc
##2012-07-03
tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install
sleep 1
cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/
if
[ $? -eq 0 ];then
echo “This gcc configure is success”
else
echo “This gcc configure is failed”
fi
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/
make && make install
[ $? -eq 0 ]&&echo This is make install success
=================================================================
安装成功后,在/etc/lib中输入以下命令建立链接:
ln -s -f /usr/local/mpc/lib/libmpc.so libmpc.so
ln
-s -f /usr/local/mpc/lib/libmpc.so.2 libmpc.so.2
三, 编译android部分,必须安装JDK
android 2.3 要求安装JDK 1.6.
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: java version "1.7.0_71".
The correct version is: 1.6.
Please follow the machine setup instructions at http://source.android.com/download ************************************************************
build/core/main.mk:118: *** stop. Stop.
lisa@lisa:~/public/RT/android$ java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
安装方法(参考网上方案):
下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk6u35-downloads-1836443.html 下载的是: jdk-6u35-linux-x64.bin (64位的)
2、改变权限 chmod u+x jdk-6u35-linux-i586.bin
3、解压 ./jdk-6u35-linux-x64.bin 解压出来目录是 jdk1.6.0_35
4、为JDK新建存放目录 sudo mkdir -p /usr/lib/jvm/
5、将解压出来的 jdk1.6.0_35 目录拷贝到新目录 sudo cp -r jdk1.6.0_35/ /usr/lib/jvm/jdk1.6.0_35/
6、配置环境变量:
$ sudo gedit /etc/profile
在文件的末尾加上如下内容,保存并关闭文件
# for java
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_35
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
7、使设置生效:到此部JDK的配置就都完成了
$ source /etc/profile
8、测试
java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01, mixed mode)
9、至此完成JDK在ubuntu 14.04 64位上JDK1.6的安装
=========== 检查版本是否生效,可以用以下命令:==============
** 检查新的版本是否生效。
Ubuntu系统默认安装并使用OpenJDK(usr/lib/jvm/),因此需要手动修改系统默认的JDK,
sudo update-alternatives --install /usr/bin/javac javac /home/your_name/Tools/jdk1.7.0_51/bin/javac 300
sudo update-alternatives --install /usr/bin/java java /home/your_name/Tools/jdk1.7.0_51/bin/java 300
sudo update-alternatives --config javac,再选择相应的Priority 300
sudo update-alternatives --config java,再选择相应的Priority 300
至此配置完成,输入java -version、javac或java检查是否配置成功。
===========================================
另外在编译过程中,根据环境不同,可能有些遗漏的库需要安装,
可以通过 apt-get install 安装必要的组件。这个只有见招拆招了。
四,编译错误处理·(此部分是摘抄网上博客)
【Android源代码编译】Ubuntu13.04编译android 2.3源代码时出现了以下错误dalvik/vm/native/dalvik_system_Zygote.c:In function ‘setrlimitsFromArray’:
dalvik/vm/native/dalvik_system_Zygote.c:192: error: storage size of ‘rlim’isn’t known
dalvik/vm/native/dalvik_system_Zygote.c:215: warning: implicit declaration offunction ‘setrlimit’
dalvik/vm/native/dalvik_system_Zygote.c:192: warning: unused variable ‘rlim’
This error is because 2 header filesare needed while calling setrlimit function:
#include <sys/time.h>
#include <sys/resource.h>
You can check by typing "mansetrlimit":
GETRLIMIT(2) Linux Programmer'sManual GETRLIMIT(2)
NAME
getrlimit, setrlimit, prlimit - get/set resource limits
SYNOPSIS
#include <sys/time.h>
#include <sys/resource.h>
Anyway, I raise this issue to modifydalvik/vm/native/dalvik_system_Zygote.c file with the following include file:
$vi android/dalvik/vm/native/dalvik_system_Zygote.c
#include <sys/time.h>
#include <sys/resource.h>
修改后可以在ubantu13.04上可以编译通过,并且 ubuntu10.04 和 ubuntu12.04都也可以编译通过,没有影响
安装编译所需的软件包:
1 $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline6-dev libgl1-mesa-glx libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
zlib1g-dev libreadline6-dev gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
2 $ sudoln -s /usr/lib/i386-linux-gnu/libX11.so.1 /usr/lib/i386-linux-gnu/libX11.so
如果你系统默认的gcc g++是4.7不是4.4的,会产生很多莫名其妙的编译失败,可能是你的gcc使用的比较高,gcc --version 查看下,不是4.4的话修改如下:3 $cd /usr/bin/
$sudo mv gcc gcc.bak
$sudo ln -s gcc-4.4 gcc
$sudo mv g++ g++.bak
$sudo ln -s g++-4.4 g++
4.java python 等
================================参考文章 ========================
我的系统是Ubuntu 13.04 64bit
编译碰到了各式各样的问题 我这里给出一些链接 都是我碰到问题的时候参看的
frameworks/base/include/utils/KeyedVector.h:193:31: 附注: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/CrunchCache.o] 错误 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Command.o] 错误 1
第一个问题 解决方式是对gcc 和g++ 降级
1、首先安装gcc4.4和g++4.4
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.42
gcc和g++的降级gcc降级:
sudo rm -rf /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
gcc -v
g++降级
sudo rm -rf /usr/bin/g++
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
g++ -v
这里会碰到由2个GCC 与G++
host Executable: cmu2nuance (out/host/linux-x86/obj/EXECUTABLES/cmu2nuance_intermediates/cmu2nuance)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
make: *** Waiting for unfinished jobs....
host Executable: coverage (out/host/linux-x86/obj/EXECUTABLES/coverage_intermediates/coverage)
这个问题我也碰到了 安装后解决
安装libncurses5-dev:i386可以解决
sudo apt-get install libncurses5-dev:i386
dalvik/vm/native/dalvik_system_Zygote.cpp: In function ‘int setrlimitsFromArray(ArrayObject*)’:dalvik/vm/native/dalvik_system_Zygote.cpp:199:19: error: aggregate ‘setrlimitsFromArray(ArrayObject*)::rlimit rlim’ has incomplete type and cannot be defined
struct rlimit rlim;
dalvik/vm/native/dalvik_system_Zygote.cpp:222:43: error: ‘setrlimit’ was not declared in this scope err = setrlimit(contents[0], &rlim);
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1make: *** Waiting for unfinished jobs....
所以,这个问题只能修改源代码来解决
在dalvik/vm/native/dalvik_system_Zygote.cpp中间增加一个头文件定义#include <sys/resource.h>
#include "Dalvik.h"
#include "native/InternalNativePriv.h"
#include <sys/resource.h>
Android(4.0)编译错误:usr/bin/ld: cannot find libncurses.so.5 cannot find -lGL
$sudo apt-get installlibx11-dev:i386(libX11.so)
$ sudo apt-get installibgl1-mesa-glx:i386(libGL.so)
由于libGL.so系统默认没有进行库路径下的链接,还需要手动链接一下
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
安装这2个解决
基本就是这些问题 中国上GOOGLE比较困难 大家相互帮组吧
另外下载GMP的网址如下, 这个网址可以下载ubuntu官方各种包:
https://launchpad.net/ubuntu/precise/+source/gmp
2.3 相比,简直太新潮了,以至于很多组件不相容。所以现在只有遇到问题解决问题了。
一, 安装必要的文件
Install the required packages and tools.
$ sudo apt-get install git gnupg flex bison gperf build-essential \
libgmp10 autoconf automake libtool xmlto sqlite3\
zip curl libc6-dev libncurses5-dev x11proto-core-dev \
libglapi-mesa
libgl1-mesa-dri \
libx11-dev libreadline6-dev libgl1-mesa-glx \
libgl1-mesa-dev g++-multilib mingw32 tofrodos \
python-markdown libxml2-utils xsltproc zlib1g-dev
$ sudo apt-get install xutils-dev binutils-dev
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-
gnu/libGL.so
$sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so.10 /usr/lib/libgmp.so
$sudo ln -s /usr/lib/x86_64-linux-gnu/libgmp.so.10 /usr/lib/libgmp.so.3
二,首先编译kernle部分
/home/xxx/public/workspace/prebuilt/linux-x86_64/toolchain/linaro-201105-csr-build-armv7-vfpv3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.4/cc1:
error while loading shared libraries: libmpc.so.2: cannot open shared object file: No such file or directory
原因是: 14.04安装的libmpc 版本太高了,没有libmpc.so.2 只有 libmpc.so 和 libmpc.so.3
所以要安装合适的版本,另外 libmpc 依赖于其他的组件 GMP和MPFR。
所以需要安装合适版本的组件,我用的libmpc-0.9 的,安装后包含 libmpc.so.2
如果是libmpc-1.0+的,只包含 libmpc.so.3 和libmpc.so 了。
至于从何地址下载安装这些组件,我参考以下博文(从网上摘抄):
GCC编译需要GMP, MPFR, MPC这三个库,这三个包可以从下面的地址下载:
GMP: http://gmplib.org/
MPFR: http://www.mpfr.org/
MPC: http://www.multiprecision.org/index.php?prog=mpc&page=download
=========================================
需要把目前gcc-4.4.4升级到gcc-4.6.1,考虑到有多台的原因,做了一个脚本自动安装结合批量工具分发。
一、安装环境
系统版本:centos6.0X64
原GCC版本:gcc-4.4.4
新GCC版本:gcc-4.6.1
二、正式安装
1、下载安装的源码:
如下需要下载以下包:gcc-4.6.1.tar.bz2 gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2
下载地址如下:
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/{gmp-4.3.2.tar.bz2,mpc-0.8.1.tar.gz,mpfr-2.4.2.tar.bz2}
wget http://ftp.gnu.org/gnu/gcc/gcc-4.6.1/gcc-4.6.1.tar.bz2 即可!
2、解压安装:安装有先后顺序:GMP、MPFR、MPC、GCC
安装GMP: tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install
安装MPFR:
cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
安装MPC:
cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
安装GCC:
cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/
&&make &&make install
然后执行如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/
//这一步很关键,设置变量,不设置后面会报错。
make && make install
安装完毕即可!然后做一个链接就可以使用GCC了
mkdir -p /data/backup/`date +%Y%m%d`
mv /usr/bin/{gcc,g++} /data/backup/`date +%Y%m%d`
新建软链接:
ln -s /usr/local/gcc/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc/bin/g++ /usr/bin/g++
三、测试GCC
直接输入gcc -v 可以查看到gcc 版本为4.6.1和相关的编译参数就ok了!附上一个最简单的安装脚本:
#!/bin/sh
##auto make install gcc
##2012-07-03
tar jxf gmp-4.3.2.tar.bz2 &&cd gmp-4.3.2/ ;./configure –prefix=/usr/local/gmp/ &&make &&make install
sleep 1
cd ../ ;tar jxf mpfr-2.4.2.tar.bz2 ;cd mpfr-2.4.2/ ;./configure –prefix=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
cd ../ ;tar xzf mpc-0.8.1.tar.gz ;cd mpc-0.8.1 ;./configure –prefix=/usr/local/mpc –with-mpfr=/usr/local/mpfr –with-gmp=/usr/local/gmp &&make &&make install
cd ../ ;tar jxf gcc-4.6.1.tar.bz2 ;cd gcc-4.6.1 ;./configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –disable-multilib –enable-languages=c,c++ –with-gmp=/usr/local/gmp –with-mpfr=/usr/local/mpfr/ –with-mpc=/usr/local/mpc/
if
[ $? -eq 0 ];then
echo “This gcc configure is success”
else
echo “This gcc configure is failed”
fi
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc/lib:/usr/local/gmp/lib:/usr/local/mpfr/lib/
make && make install
[ $? -eq 0 ]&&echo This is make install success
=================================================================
安装成功后,在/etc/lib中输入以下命令建立链接:
ln -s -f /usr/local/mpc/lib/libmpc.so libmpc.so
ln
-s -f /usr/local/mpc/lib/libmpc.so.2 libmpc.so.2
三, 编译android部分,必须安装JDK
android 2.3 要求安装JDK 1.6.
============================================
Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: java version "1.7.0_71".
The correct version is: 1.6.
Please follow the machine setup instructions at http://source.android.com/download ************************************************************
build/core/main.mk:118: *** stop. Stop.
lisa@lisa:~/public/RT/android$ java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode)
安装方法(参考网上方案):
下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk6u35-downloads-1836443.html 下载的是: jdk-6u35-linux-x64.bin (64位的)
2、改变权限 chmod u+x jdk-6u35-linux-i586.bin
3、解压 ./jdk-6u35-linux-x64.bin 解压出来目录是 jdk1.6.0_35
4、为JDK新建存放目录 sudo mkdir -p /usr/lib/jvm/
5、将解压出来的 jdk1.6.0_35 目录拷贝到新目录 sudo cp -r jdk1.6.0_35/ /usr/lib/jvm/jdk1.6.0_35/
6、配置环境变量:
$ sudo gedit /etc/profile
在文件的末尾加上如下内容,保存并关闭文件
# for java
export JAVA_HOME=/usr/lib/jvm/jdk1.6.0_35
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
7、使设置生效:到此部JDK的配置就都完成了
$ source /etc/profile
8、测试
java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01, mixed mode)
9、至此完成JDK在ubuntu 14.04 64位上JDK1.6的安装
=========== 检查版本是否生效,可以用以下命令:==============
** 检查新的版本是否生效。
Ubuntu系统默认安装并使用OpenJDK(usr/lib/jvm/),因此需要手动修改系统默认的JDK,
sudo update-alternatives --install /usr/bin/javac javac /home/your_name/Tools/jdk1.7.0_51/bin/javac 300
sudo update-alternatives --install /usr/bin/java java /home/your_name/Tools/jdk1.7.0_51/bin/java 300
sudo update-alternatives --config javac,再选择相应的Priority 300
sudo update-alternatives --config java,再选择相应的Priority 300
至此配置完成,输入java -version、javac或java检查是否配置成功。
===========================================
另外在编译过程中,根据环境不同,可能有些遗漏的库需要安装,
可以通过 apt-get install 安装必要的组件。这个只有见招拆招了。
四,编译错误处理·(此部分是摘抄网上博客)
【Android源代码编译】Ubuntu13.04编译android 2.3源代码时出现了以下错误dalvik/vm/native/dalvik_system_Zygote.c:In function ‘setrlimitsFromArray’:
dalvik/vm/native/dalvik_system_Zygote.c:192: error: storage size of ‘rlim’isn’t known
dalvik/vm/native/dalvik_system_Zygote.c:215: warning: implicit declaration offunction ‘setrlimit’
dalvik/vm/native/dalvik_system_Zygote.c:192: warning: unused variable ‘rlim’
This error is because 2 header filesare needed while calling setrlimit function:
#include <sys/time.h>
#include <sys/resource.h>
You can check by typing "mansetrlimit":
GETRLIMIT(2) Linux Programmer'sManual GETRLIMIT(2)
NAME
getrlimit, setrlimit, prlimit - get/set resource limits
SYNOPSIS
#include <sys/time.h>
#include <sys/resource.h>
Anyway, I raise this issue to modifydalvik/vm/native/dalvik_system_Zygote.c file with the following include file:
$vi android/dalvik/vm/native/dalvik_system_Zygote.c
#include <sys/time.h>
#include <sys/resource.h>
修改后可以在ubantu13.04上可以编译通过,并且 ubuntu10.04 和 ubuntu12.04都也可以编译通过,没有影响
安装编译所需的软件包:
1 $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline6-dev libgl1-mesa-glx libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
zlib1g-dev libreadline6-dev gcc-4.4 g++-4.4 g++-4.4-multilib gcc-4.4-multilib
2 $ sudoln -s /usr/lib/i386-linux-gnu/libX11.so.1 /usr/lib/i386-linux-gnu/libX11.so
如果你系统默认的gcc g++是4.7不是4.4的,会产生很多莫名其妙的编译失败,可能是你的gcc使用的比较高,gcc --version 查看下,不是4.4的话修改如下:3 $cd /usr/bin/
$sudo mv gcc gcc.bak
$sudo ln -s gcc-4.4 gcc
$sudo mv g++ g++.bak
$sudo ln -s g++-4.4 g++
4.java python 等
================================参考文章 ========================
我的系统是Ubuntu 13.04 64bit
编译碰到了各式各样的问题 我这里给出一些链接 都是我碰到问题的时候参看的
frameworks/base/include/utils/KeyedVector.h:193:31: 附注: use ‘this->indexOfKey’ instead
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/CrunchCache.o] 错误 1
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/Command.o] 错误 1
第一个问题 解决方式是对gcc 和g++ 降级
1、首先安装gcc4.4和g++4.4
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.42
gcc和g++的降级gcc降级:
sudo rm -rf /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
gcc -v
g++降级
sudo rm -rf /usr/bin/g++
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++
g++ -v
这里会碰到由2个GCC 与G++
host Executable: cmu2nuance (out/host/linux-x86/obj/EXECUTABLES/cmu2nuance_intermediates/cmu2nuance)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
make: *** Waiting for unfinished jobs....
host Executable: coverage (out/host/linux-x86/obj/EXECUTABLES/coverage_intermediates/coverage)
这个问题我也碰到了 安装后解决
安装libncurses5-dev:i386可以解决
sudo apt-get install libncurses5-dev:i386
dalvik/vm/native/dalvik_system_Zygote.cpp: In function ‘int setrlimitsFromArray(ArrayObject*)’:dalvik/vm/native/dalvik_system_Zygote.cpp:199:19: error: aggregate ‘setrlimitsFromArray(ArrayObject*)::rlimit rlim’ has incomplete type and cannot be defined
struct rlimit rlim;
dalvik/vm/native/dalvik_system_Zygote.cpp:222:43: error: ‘setrlimit’ was not declared in this scope err = setrlimit(contents[0], &rlim);
make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libdvm_intermediates/native/dalvik_system_Zygote.o] Error 1make: *** Waiting for unfinished jobs....
所以,这个问题只能修改源代码来解决
在dalvik/vm/native/dalvik_system_Zygote.cpp中间增加一个头文件定义#include <sys/resource.h>
#include "Dalvik.h"
#include "native/InternalNativePriv.h"
#include <sys/resource.h>
Android(4.0)编译错误:usr/bin/ld: cannot find libncurses.so.5 cannot find -lGL
$sudo apt-get installlibx11-dev:i386(libX11.so)
$ sudo apt-get installibgl1-mesa-glx:i386(libGL.so)
由于libGL.so系统默认没有进行库路径下的链接,还需要手动链接一下
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
安装这2个解决
基本就是这些问题 中国上GOOGLE比较困难 大家相互帮组吧
另外下载GMP的网址如下, 这个网址可以下载ubuntu官方各种包:
https://launchpad.net/ubuntu/precise/+source/gmp
相关文章推荐
- 如何在ubuntu14.04(64位)编译运行32位程序
- 在64位Ubuntu14.04LTS上编译和链接32位汇编程序(使用c标准库)需要如何配置配置环境
- 如何在ubuntu14.04(64位)编译运行32位程序
- 如何在Ubuntu14.04+上编译同时支持python2和python3的vim?
- Ubuntu14.04下如何编译c程序
- 如何在ubuntu14.04(64位)编译运行32位程序
- 如何在ubuntu14.04上面安装OpenCv3.0.0
- Ubuntu10.04系统 32位机上安装编译Android2.3源码
- 如何在Ubuntu编译Linux内核
- 如何编译一个内核 - Ubuntu方式
- 在32位Ubuntu 10.04上编译Android 2.3
- Android2.3 如何编译——解决
- 如何在Ubuntu上面制作MeeGo系统
- 如何编译一个内核 - Ubuntu方式(转)
- Ubuntu 10.04(32位)下 编译Android 2.3源码全过程 || 编译android4.0成功
- Ubuntu 10.10(64位)编译Android 2.3
- 在32位Ubuntu10.04上编译Android2.3
- box2d 在ubuntu 上面的编译过程
- Ubuntu32位编译Android2.3 -Gingerbread
- 如何配置Ubuntu编译环境