Android.mkに.aファイルの記述方法

3,568 views
Skip to first unread message

JPN IPS

unread,
Jun 24, 2010, 5:31:51 AM6/24/10
to 日本Androidの会
現在Android Recovery Modeにプログラムを追加しAndroidをビルドしようとしています。
このプログラムは、画面にメッセージを表示するものです。
既にコンパイルされてアーカイバーでtest.aファイルになっているライブラリを呼出して表示を行います。

Android.mkに自分で作成したmain.cとlib.a内に含まれる関数をリンクする必要があるのですが、
test.aをAndroid.mkで指定するのか判らず困っています。

LOCAL_SRC_FILES := main.c
は記述していますが、どの様にtest.aを指定してリンクエラーを解消してよいのか判らず
undefined reference to `display_message' とリンカーがエラーを出してしまいます。

どなたかご存知でしたら、教えていただけますでしょうか。

よろしくお願いします。

l.b.

unread,
Jun 27, 2010, 4:50:51 AM6/27/10
to 日本Androidの会

 村上です。

 詳細はhttp://android.git.kernel.org/?p=platform/
build.git;a=blob_plain;f=core/build-system.html にありますが、
 LOCAL_STATIC_LIBRARIESで指定すればリンクされませんか?

JPN IPS

unread,
Jul 5, 2010, 4:54:47 AM7/5/10
to 日本Androidの会
ご回答ありがとうございます。

その後以下のことを試しました。

ライブラリはmain.cのあるディレクトリの中のobjディレクトリにあるので以下の様に記述しました。

LOCAL_STATIC_LIBRARIES += obj/test.a
すると、
必要なターゲット `out/target/product/generic/obj/STATIC_LIBRARIES/obj/
test.a_intermediates/obj/test.a.a' を make するルールがありません. 中止.

とエラーになってしまいます。
.aを外して以下の様に記述した場合は、
LOCAL_STATIC_LIBRARIES += obj/test
必要なターゲット `out/target/product/generic/obj/STATIC_LIBRARIES/obj/
test_intermediates/obj/test.a' を make するルールがありません. 中止.

とやはりエラーになってしまいます。
test.aは既にコンパイルされているもので、手元にはソースコードがないためtest.aのためのmakeは書いていません。
手元にソースコードがない場合はどの様に指定したらよいのでしょうか?

アイデアを頂けますでしょうか。
よろしくお願いいたします。
> > よろしくお願いします。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

l.b.

unread,
Jul 5, 2010, 10:54:55 AM7/5/10
to 日本Androidの会

 村上です。

 でしたらこんな感じでいけないですかね。

 LOCAL_PREBUILT_LIBS := obj/test.a
include $(BUILD_MULTI_PREBUILT) #ここはBUILD_PREBUILTでも良いかも

LOCAL_STATIC_LIBRARIES := test

 他の項目はそのままで。

 これは余計なお世話ですが、ライブラリ名はlibtest.aの方がよいかも。
 LinuxでGCCの -lオプションでリンクするとき、libxx.soやlibxx.aというライブラリ名が前提となっているので。

 では。

JPN IPS

unread,
Jul 9, 2010, 6:29:24 AM7/9/10
to 日本Androidの会
ご回答ありがとうございます。

教えて頂きました方法を試してみたいと思います。

どうもありがとうございました。
> > よろしくお願いいたします。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -
Reply all
Reply to author
Forward
0 new messages