这个是自己搭建编译环境的过程中遇到的一些问题,如果你也遇到同样的问题可以参考下。


ubuntu14.04下搭建Android编译环境

目的:使用ubuntu14.04 server版本搭建Android编译环境;

步骤:

1、安装Vmware虚拟机;

2、下载ubuntu14.04服务器版本镜像,并安装ubuntu14.04虚拟机;

3、安装完成后设置网络以及网络的代理(只有一个IP有上网权限):

设置静态IP修改/etc/network/interfaces,内容如下:(不一一解释,可网上查询)

auto eth0

iface eth0 inet static

address 192.168. *.*

netmask 255.255.255.0

gateway 192.168.*.*

修改/etc/profile,在该文件最后添加如下内容:

export http_proxy=http://192.168.*.*:808

export https_proxy=http://192.168.*.*:808

export ftp_proxy=http://192.168.*.*:808

export no_proxy=http://192.168.0.0/16

    在/etc/apt/目录下添加apt.conf文件,内容如下

       Acquire::http::proxy "http://192.168.12.50:808";

Acquire::ftp::proxy"http://192.168.12.50:808";

Acquire::https::proxy"http://192.168.12.50:808";

Acquire::no::proxy"http://192.168.0.0/16";

http://192.168.*.*:808依据自己的代理服务器设置;http://192.168.0.0/16和本地通信不适用代理设置。设置好IP之后,执行sudoufw disable关闭防火墙(也可以自己按照需求设置防火墙功能);

4、执行“sudoapt-get update”(不执行这一步骤,apt-get无法在线获取安装包)

5、安装习惯的编译工具VIM;执行“sudo apt-get install vim”;

6、到目前为止是没法连接ssh的,因为服务器版本中没有ssh-server,所以我们要先安装一个ssh-server,执行“sudo apt-get install openssh-server”;

7、是不是想到也要安装samba了呢 ,现在就安装上吧,执行“sudo apt-get install samba”;

8、安装Android的编译环境,执行以下命令:

wgethttp://openlinux.amlogic.com:8000/deploy/CodeSourcery.tar.gz  -P /tmp/ 

tar -zxvf/tmp/CodeSourcery.tar.gz  -C  /opt 

wgethttp://openlinux.amlogic.com:8000/deploy/gnutools.tar.gz  -P /tmp  

tar -zxvf/tmp/gnutools.tar.gz  -C  /opt  

wget http://openlinux.amlogic.com:8000/deploy/arc_gnutools.sh  -P /etc/profile.d   

wgethttp://openlinux.amlogic.com:8000/deploy/arm_path.sh  -P /etc/profile.d

wgethttp://openlinux.amlogic.com:8000/deploy/repo -P  /usr/bin  

chmod +x /usr/bin/repo

9、从服务器将版本copy到自己的服务器上:

scp -r username@192.168.4.199:/home/username/path  ./本地目录

10、根据错误提示安装所缺少的文件如下:

sudo apt-get install make liblzo2-devbison lsb-core default-jdk ecj gcj-4.8-jdk openjdk-7-jdk openjdk-6-jdk git flexgit-core gnupg gperf build-essential zip curl zlib1g-dev gcc-multilibg++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-devlib32z-dev libswitch-perl

出现一下错误:

Your version is: java version "1.6.0_24".
The correct version is: Java SE 1.6.

Please follow the machine setup instructions at
http://source.android.com/source/download.html
************************************************************
build/core/main.mk:131: *** stop. Stop.

 

sudo update-alternatives --configjava

There are 3 choices for the alternative java (providing/usr/bin/java).

 

  Selection    Path                                           Priority   Status

------------------------------------------------------------

* 0            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071     auto mode

  1            /usr/bin/gij-4.8                                 1048      manual mode

  2           /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061     manual mode

  3            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071     manual mode

 

Press enter to keep the current choice[*], or typeselection number: 2

sudo update-alternatives --configjavac

There are 4 choices for the alternative javac (providing/usr/bin/javac).

 

  Selection    Path                                        Priority   Status

------------------------------------------------------------

  0           /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071     auto mode

  1            /usr/bin/ecj                                  143       manual mode

  2            /usr/bin/gcj-wrapper-4.8                      1048      manual mode

* 3           /usr/lib/jvm/java-6-openjdk-amd64/bin/javac   1061     manual mode

  4            /usr/lib/jvm/java-7-openjdk-amd64/bin/javac   1071     manual mode

 

Press enter to keep the current choice[*], or typeselection number:3

以上内容安装完成之后,编译过程中出现以下问题及解决方案:

 

Can't locate Switch.pm in @INC (you may need to install theSwitch 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 .) atexternal/webkit/Source/WebCore/make-hash-tools.pl line 23.

BEGIN failed--compilation aborted at external/webkit/Source/WebCore/make-hash-tools.plline 23.

target Generated: libwebcore <=external/webkit/Source/WebCore/platform/ColorData.gperf

make: ***[out/target/product/f16ref/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/html/DocTypeStrings.cpp]Error 2

make: *** Waiting for unfinished jobs....

Can't locate Switch.pm in @INC (you may need to install theSwitch 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 .) atexternal/webkit/Source/WebCore/make-hash-tools.pl line 23.

BEGIN failed--compilation aborted atexternal/webkit/Source/WebCore/make-hash-tools.pl line 23.

make: *** [out/target/product/f16ref/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/platform/ColorData.cpp]Error 2

target Generated: libwebcore <=external/webkit/Source/WebCore/html/parser/HTMLEntityNames.in

make: *** wait: No child processes.  Stop.

sudo apt-get install libswitch-perl

:0:0: warning:"_FORTIFY_SOURCE" redefined [enabled by default]

build/tools/acp/acp.c:1:0: note: this is the location ofthe previous definition /*

sudo apt-get install gcc-4.4 g++-4.4g++-4.4-multilib
sudo rm /usr/bin/gcc

sudo rm /usr/bin/g++
sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.4 /usr/bin/g++

make: *** [out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex]Killed

 方法一:

 java-Xms3550M -Xmx3550M -jar /home/test/4.0/out/host/linux-x86/framework/dx.jar--dex--output=out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes-with-local.dex--core-library out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/noproguard.classes.jar

方法二:

方法二:

修改definitions.mk文件此文件位于build/core/目录下

修改变量transform-classes.jar-to-dex中的-JXms16M-JXmx1024M

代码中的变量定义:

definetransform-classes.jar-to-dex
@echo "target Dex: $(PRIVATE_MODULE)"
@mkdir -p $(dir $@)
$(hide) $(DX) \
    $(if $(findstring windows,$(HOST_OS)),
,-JXms16M-JXmx1024M) \
    --dex --output=$@ \
    $(if $(NO_OPTIMIZE_DX), \
        --no-optimize) \
    $(if $(GENERATE_DEX_DEBUG), \
        --debug --verbose \
        --dump-to=$(@:.dex=.lst) \
        --dump-width=1000) \
    $(PRIVATE_DX_FLAGS) \
    $<
endef

-JXms16M -JXmx1024M 修改成适当的值

我的机器是内存是32G的,我将-JXms16M-JXmx1024M修改为-JXms1024M-JXmx2048M

具体值的大小要根据具体机器的内存而定,内存太少设置的值大一样会出现问题。

[out/host/linux-x86/obj/EXECUTABLES/grxmlcompile_intermediates/grxmlcompile.o]Killed

sudo apt-get installlibncurses5-dev

 

MSTAR编译失败:

./check_mmap.sh: 66:./check_mmap.sh: Syntax error: "(" unexpected (expecting"}")

解决方法:

执行$sudo dpkg-reconfigure dash命令,并选择

./mkfs.ubifs: error while loadingshared libraries: liblzo2.so.2: cannot open shared object file: No

sudo apt-get install liblzo2-dev:i386

./mkfs.ubifs: error while loadingshared libraries: libuuid.so.1: cannot open shared object file: No such file ordirectory

sudo apt-get install uuid-dev:i386

安装NFS服务器

一、NFS安装
    $ sudo apt-get install nfs-kernel-server nfs-commonportmap
二、NFS配置
    2.1 配置/etc/exports文件
    $ sudo vim /etc/exports
在文件最后加入如下内容:

      /home*(rw,sync,no_root_squash)

       注:nfs允许挂载的目录及权限在文件/etc/exports中进行了定义。其中:/rootnfs是要共享的目录,*代表允许所有的网络段访问,rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是nfs客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。

nfs常用的参数有:
 
ro 只读访问
rw 读写访问sync 所有数据在请求时写入共享
async nfs在写入数据前可以响应请求
secure nfs通过1024以下的安全TCP/IP端口发送
insecure nfs通过1024以上的端口发送
wdelay 如果多个用户要写入nfs目录,则归组写入(默认)
no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
hide 在nfs共享目录中不共享其子目录
no_hide 共享nfs目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID

三、重启服务

$ sudo /etc/init.d/nfs-kernel-server restart

四、测试
    4.1 显示出共享出来的目录
    $ showmount -e
    4.2 将nfs的rootnfs目录挂载到本地磁盘上。
    $ sudo mount -t nfs localhost:/rootnfs /mnt
    4.3 查看挂载情况
    $ df
    4.4 卸载挂载
    $ sudo umount /mnt
五、完成

 

gcc: error tryingto exec 'cc1': execvp: No such file or directory

sudo apt-get purge gcc

sudo apt-get install gcc


更多相关文章

  1. [Android(安卓)API学习]Data Storage胡乱翻译(1)
  2. WebView:Android-H5交互
  3. 梳理uid、userid及UserHandle概念
  4. cocos2dx在windows下开发,编译到android上(1)
  5. 关于android中的内部存储与外部存储
  6. 对 android apk 进行重新签名操作
  7. android MK文件简介
  8. Android(安卓)NDK开发详细介绍
  9. android 资源文件String字符串拼接

随机推荐

  1. Android之UI学习篇三:TextVeiw单击文字链
  2. Android(安卓)中如何选择 compileSdkVers
  3. android permission权限与安全机制解析(下
  4. Android构建过程简述
  5. android eclipse 环境
  6. Android4.0:统一标准强行安装默认主题Holo
  7. Android培训班(8)
  8. Android(安卓)轻松实现语音识别
  9. android 操作sdcard中的多媒体文件(一)——
  10. Android使用Intent Filter来响应隐式Inte