按照文檔修改了:
由於ubuntu12.04 用的gcc 是4.6 的版本,如果使用Ubuntu 12.04 編譯需要修改代碼:
build/core/combo/HOST_linux-x86.mk
-HOST_GLOBAL_CFLAGS+=-D_FORTIFY_SOURCE=0
+HOST_GLOBAL_CFLAGS+=-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
frameworks/base/libs/utils/Android.mk
-LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
+LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) –fpermissive
還是出現錯誤:
frameworks/base/libs/utils/RefBase.cpp: 在成員函數‘void android::RefBase::weakref_type::trackMe(bool, bool)’中:
frameworks/base/libs/utils/RefBase.cpp:483:67: 錯誤: 將‘const android::RefBase::weakref_impl’作爲‘void android::RefBase::weakref_impl::trackMe(bool, bool)’的‘this’實參時丟棄了類型限定 [-fpermissive]
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 錯誤 1
原因:Ubuntu 12.04的gcc 4.6版本太高了,android編譯需要gcc 4.4
解決辦法:更換gcc、g++版本4.6爲4.4
apt-get install gcc-4.4
apt-get install g++-4.4
rm -rf /usr/bin/gcc /usr/bin/g++
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
ln -s /usr/bin/g++-4.4 /usr/bin/g++
錯誤2:
g++: 錯誤: –fpermissive:沒有那個文件或目錄
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libutils_intermediates/RefBase.o] 錯誤 1
解決辦法:apt-get install g++-4.4-multilib
編譯通過。