ubuntu12.04下编译android源代码出现的问题

今天准备在Ubuntu下把之前下载好的android2.2的源码编译下,本以为可以顺利完成编译,结果发现编译过程中出现了一些问题,所以就想把它记录下来一是为了方便以后自己查阅,二是为了给和我一样出现这些问题的人一些参考吧!

问题一、在终端进入源码文件夹下使用make编译源码不久后就出现如下错误:

host C++: libutils <= frameworks/base/libs/utils/RefBase.cpp
frameworks/base/libs/utils/RefBase.cpp: In member function 
‘void android::RefBase::weakref_type::trackMe(bool, bool)’:
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] 

解决办法:(下面红色行为终端中的指令)

gedit frameworks/base/libs/utils/Android.mk
找到打开的Android.mk中下面这行:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
改为:
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive

问题二、按照问题一修改后重新make编译出现如下错误:

host C++: libutils <= frameworks/base/libs/utils/Asset.cpp
g++: –fpermissive:no directory or file

原因说是g++和gcc版本太高了,所以要重新安装低版本的gcc(不用卸载当前gcc)

解决办法

(1)安装gcc和g++

sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4

(2)安装完成后进入/usr/bin/修改gcc和g++设置具体操作如下:(红色为终端输入代码可以直接复制)

cd /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++*
sudo -s
mv g++-4.4 g++
g++ -v

这样在进入源码文件夹下编译一般就不会出错。

如果按照问题二修改后还是报同样的错误,那么很有可能是你解决问题一的时候添加的“-fpermissives"中的”-“错误重新进入Android.mk中把”-“换成不带输入法的”-“(就是不是你直接复制本文的”-“,自己在键盘敲的英文”-“)











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值