您的位置:首页 > 移动开发 > Android开发

在Ubuntu 11.10 编译android的改动

2012-02-21 11:16 176 查看
1.host Prebuilt: monkeyrunner (out/host/linux-x86/obj/EXECUTABLES/monkeyrunner_intermediates/monkeyrunner)

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

<命令行>:0:0: 错误: “_FORTIFY_SOURCE”重定义 [-Werror]

<built-in>:0:0: 附注: 这是先前定义的位置

cc1plus:所有的警告都被当作是错误

note:

build/core/combo/HOST_linux-x86.mk line 61:

-HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0

+HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0

2.Building from the sources with the following steps does not work

directly with gcc 4.6.0

1. repo init -u git://android.git.kernel.org/platform/manifest.git -b

gingerbread && repo sync

2. .build/envsetup.sh

3. lunch (choice 1)

4. make

You get the following error:

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]

gcc seems to be less permissive than before (http://gcc.gnu.org/

gcc-4.6/changes.html, need some further investigations)

The patch below seems to fix the problem (builds correctly):

% repo diff frameworks/base/libs/utils/Android.mk

project frameworks/base/

diff --git a/libs/utils/Android.mk b/libs/utils/Android.mk

index eb75ed8..c333143 100644

--- a/libs/utils/Android.mk

+++ b/libs/utils/Android.mk

@@ -57,7 +57,7 @@ LOCAL_SRC_FILES:= $(commonSources)

LOCAL_MODULE:= libutils

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

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

LOCAL_C_INCLUDES += external/zlib

ifeq ($(HOST_OS),windows)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: