概述
今天准备在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中把”-“换成不带输入法的”-“(就是不是你直接复制本文的”-“,自己在键盘敲的英文”-“)
最后
以上就是儒雅方盒为你收集整理的ubuntu12.04下编译android源代码出现的问题的全部内容,希望文章能够帮你解决ubuntu12.04下编译android源代码出现的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复