Android 2.3(rowboat 2.3.4) & Ubuntu 11.10(gcc 4.6)の組み合わせだとビルド中にいくつかコケる点があるので、そのメモ。原因は、gcc 4.6に由来するものなので、ubuntu 10.04使えば問題ないのだが。
その1
ビルド中に以下のようなエラーが出力される
host Executable: acp (out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp) host SharedLib: libneo_cs (out/host/linux-x86/obj/lib/libneo_cs.so) 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]
この修正方法は
$ gedit frameworks/base/libs/utils/Android.mk
とAndroid.mkを開いて
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS)
を
LOCAL_CFLAGS += -DLIBUTILS_NATIVE=1 $(TOOL_CFLAGS) -fpermissive
に変更する。参考元はHow to fix problem of incompatibility between GCC 4.6 and Android 2.3 (Gingerbread) « Buildallより
その2
ビルド中にずーっと “_FORTIFY_SOURCE redefined"といったワーニングが表示されつづけるのだが、ビルド中にgccに”-Werror"オプションが設定されて、ビルドがとまってしまう。 ということで、ワーニングを出ないようにする。
$ gedit build/core/combo/HOST_linux-x86.mk
でファイルを開いて
HOST_GLOBAL_CFLAGS += -D_FORTIFY_SOURCE=0
を
HOST_GLOBAL_CFLAGS += -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
に変更する。
これはAOSPあてにpatchが投げられており半年前に修正済み。新しいバージョンをビルドするなら問題にならないけど古いソースをビルドするときは注意が必要。Pull Request #1: Fix GCC 4.6 build error (_FORTIFY_SOURCE redefined) by jlebar · cgjones/android-build
組み込みAndroid エキスパート テクニックブック
posted with amazlet at 12.04.29
出村成和
シーアンドアール研究所
売り上げランキング: 10562
シーアンドアール研究所
売り上げランキング: 10562