Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452228
  • 博文数量: 40
  • 博客积分: 1410
  • 博客等级: 军士长
  • 技术积分: 1396
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-22 19:26
个人简介

嵌入式系统工程师,从事视频、图像、网络、虚拟化等方面的底层软件开发与优化。

文章存档

2014年(4)

2013年(10)

2012年(14)

2011年(12)

分类: LINUX

2012-05-14 10:01:06

本文按照谷歌官网()的要求搭建环境,不同之处,以作记录。
1. sun-java6-jdk更新报错

点击(此处)折叠或打开

  1. root@jason-desktop:~# sudo apt-get install sun-java6-jdk
  2. Reading package lists... Done
  3. Building dependency tree
  4. Reading state information... Done
  5. Package sun-java6-jdk is not available, but is referred to by another package.
  6. This may mean that the package is missing, has been obsoleted, or
  7. is only available from another source
  8. E: Package sun-java6-jdk has no installation candidate
按照该文()的意思是让我们安装openjdk-6-jdk。但是还是按照谷歌推介的软件安装比较稳妥。查资料知,可按如下方法安装sun-java6-jdk。

点击(此处)折叠或打开

  1. 1、添加这个源:
  2. deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse。

  3. 方法:
  4. sudo gedit /etc/apt/sources.list
  5. 打开源列表,在最后一行添加
  6. deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse。保存退出。

  7. 2、sudo apt-get update

  8. 3、sudo apt-get install sun-java6-jdk

2. 获取Android源码“repo sync”一步时报错

解决方法
a. 浏览器登录,并用gmail帐号登录;
b. 点击网页上的“允许访问”,得到类似

点击(此处)折叠或打开

  1. machine android.googlesource.com login git-<userName>.gmail.com password <password>
  2. machine android-review.googlesource.com login git-<userName>.gmail.com password <password>
c. 把上面那段信息追加到~/.netrc文件结尾(请检查当前用户的权限, 如果不存在此文件则自己新建一个,我是在登录用户root目录下新建了一个,即mkdir /root/.netrc,然后把上述信息拷贝到该文件里);
d. 下载地址的URI更改为a/platform/manifest(中间加上了“/a”)。
e. repo init -u a/platform/manifest -b android-2.3.4_r1
f. repo sync 

官方的说法是:因为访问基本是匿名的,为了防止连接过多(指内网/虚拟机),对同一IP地址的连接数做了一定的限制。看来是用gmail帐号进行认证。
这样的话,在公司网络内或者用虚拟机下载的话,会经常遇到这问题。

3.
因为Android2.3默认是64位的系统上编译,需要手动修改build/core/main.mk,把这个判断部分注释掉:
#ifneq (64,$(findstring 64,$(build_arch)))
#$(warning ************************************************************)
#$(warning You are attempting to build on a 32-bit system.)
#$(warning Only 64-bit build environments are supported beyond froyo/2.2.)
#$(warning ************************************************************)
#$(error stop)
#endif

修改这几个文件,该回到32位编译环境即可:
  external/clearsilver/cgi/Android.mk
  external/clearsilver/java-jni/Android.mk
  external/clearsilver/util/Android.mk
  external/clearsilver/cs/Android.mk
   把编译选项-m64改成-m32即可

ubuntu 11.10的gcc版本是4.6.1,版本太高,编译android时出错,要把gcc版本改为4.4.3。

通过gcc -v命令可以发现gcc库在/usr/lib/gcc/i686-linux-gnu目录下,该目录下有当前系统支持的各种版本gcc库 。在安装gcc 4.4前该目录下是没有4.4目录的,安装gcc 4.4后该目录下就会多出4.4这个目录,且该4.4目录下有各种相应库文件。

ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则编译时可能会出错。 

sudo apt-get install gcc-4.4 

sudo apt-get install g++-4.4 


装完后在/usr/bin目录下


$ ls -l gcc*

lrwxrwxrwx 1 root root      7 2011-10-29 09:11 gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6

发现gcc 链接到gcc-4.6,  需要将它改为链接到gcc-4.4 :

sudo mv gcc gcc.bak





sudo ln -s gcc-4.4 gcc



 

同理

ls -l g++*

lrwxrwxrwx 1 root root      7 2011-08-14 15:17 g++ -> g++-4.6

-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4

-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6

需要将g++链接改为g++-4.4:


/usr/bin$ sudo mv g++ g++.bak

/usr/bin$sudo ln -s g++-4.4 g++



再查看gcc和g++版本号:gcc -vg++ -v均显示gcc version 4.4.6 ,说明gcc 4.4安装成功。




问题2

frameworks/base/libs/utils/RefBase.cpp:483:67: error: passing ‘const android::RefBase::weakref_impl’ as ‘this’ argument of ‘void android::RefBase::weakref_impl::trackMe(bool, bool)’ discards qualifiers [-fpermissive] make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] error 1

如下解决:

$ gedit frameworks/base/libs/utils/Android.mk

将下面一行

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)

改成

LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive




xin!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
:0:0: note: this is the location of the previous definition
cc1plus: all warnings being treated as errors
make: *** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1

此处编译错误是因为ubuntu 11.10采取了GCC4.6.1导致的。


解决办法:


批改源码目次下/build/core/combo/HOST_linux-x86.mk文件:


将以下语句

HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

批改为

HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0


1.只保留错误信息:

 make ... 2>log.txt               #(注意2和>之间不要空格)

2.保留错误信息和警告信息:

   make ... > log.txt 2>&1 


阅读(2725) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~