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)
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)