android 2.3 源码编译,Android2.3源码编译错误整理

在下载编译android源码的过程中,将碰到的问题整理如下:

一.

frameworks/base/include/utils/KeyedVector.h:193:31: error: ‘indexOfKey’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

frameworks/base/include/utils/KeyedVector.h:193:31: note: declarations in dependent base ‘android::KeyedVector<:string8 android::sp> >’ are not found by unqualified lookup

frameworks/base/include/utils/KeyedVector.h:193:31: note: use ‘this->indexOfKey’ instead

make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/AaptAssets.o] Error 1

解决办法:

引起此问题的大致原因是编译器是不识别某些nonconformance code,解决办法是在相应位置加上-fpermissive来屏蔽编译器对此类代码的排斥。

frameworks/base/tools/aapt/Android.mk

Add '-fpermissive' to line 31:

LOCAL_CFLAGS += -Wno-format-y2k -fpermissive

但是继续报错:cc1plus: warning: unrecognized command line option "-Wno-format-y2k-fpermissive"

解决办法:

这类错误是找不到所需要的库文件:cannot find -lxxxxx ,其中lxxxxx代表的是libxxxxx.so,引起的原因一般有两个方面:

a)由于.so是编译临时生成的文件,如果前面的文件编译出错,libxxxxx.so没有生成,就会报错。

b)由于本机环境所造成的:

1.系统缺乏对应的库文件-->下载相应的库文件,ubuntu一般通过命令apt-get install libxxxxx-dev来安装

2.版本不对应----------------->同上

3.库文件的链接错误-------->通过find或者locate指令定位到链接文件,查看链接文件是否正确的指向了我们希望的lib,如果不是,用 ln -sf */libxxx.so.x */libxxx.so 指令修改它。

4.库文件路径设置问题------>如果是库文件路径引发的问题,可以到/etc/ld.so.conf.d目录下,修改其中任意一份conf文件,(可以自建conf,以方便识别)将lib所在目录写进去,然后在终端输入 ldconfig 更新缓存

三.

host C++: obbtool <= frameworks/base/tools/obbtool/Main.cpp

:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]

frameworks/base/tools/obbtool/Main.cpp:1: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

解决办法:

原因是GCC版本太高,需要吧GCC版本修改为4.4.6

sudo apt-get install gcc-4.4

sudo apt-get install g++-4.4

在ubuntu上将默认的GCC和G++版本改为4.4使用以下命令

1.sudo rm/usr/bin/gcc

2.sudo ln-s/usr/bin/gcc-4.4/usr/bin/gcc

四.

target thumb C++: libmedia <= frameworks/base/media/libmedia/MediaScanner.cpp

frameworks/base/media/libmedia/MediaScanner.cpp: In function ‘bool android::fileMatchesExtension(const char*, const char*)’:

frameworks/base/media/libmedia/MediaScanner.cpp:84: error: invalid conversion from ‘const char*’ to ‘char*’

frameworks/base/media/libmedia/MediaScanner.cpp:90: error: invalid conversion from ‘const char*’ to ‘char*’

make: *** [out/debug/host/linux-x86/pr/sim/obj/SHARED_LIBRARIES/libmedia_intermediates/MediaScanner.o] Error 1

解决办法:

因为GCC4.4版本在编译时不支持const char* 和char*的转换,在其它的GCC版本上应该都能编译过。具体解释http://gcc.gnu.org/gcc-4.4/porting_to.html

frameworks/base/media/libmedia/MediaScanner.cpp:84&90:

-char*

+const char*

五.

development/simulator/app/DeviceManager.cpp:8: fatal error: wx/wxprec.h: No such file or directory

compilation terminated.

development/simulator/app/DeviceWindow.cpp:8: fatal error: wx/wxprec.h: No such file or directorymake: *** [out/host/linux-x86/obj/EXECUTABLES/simulator_intermediates/DeviceManager.o] Error 1

ubuntu13.04无法支持libwxgkt2.6-dev 所以需要安装高版本的wx2.8

解决办法:

apt-file search wxprec.h

sudo apt-get install wx2.8

wx-config --cflags

六.同步内部环境

. build/envsetup.sh

lunch

Lunch menu... pick a combo:

1. generic-eng

2. simulator

3. full_passion-userdebug

4. full_crespo-userdebug

choose 2

make -j4

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值