1

Androidログ印刷を使用するために、アプリケーションにliblogを含めようとしていました。

私はそれを含めてみましたLOCAL_LDLIBS

LOCAL_LDLIBS := -llog

うまくいきません。以下のエラーが表示されます。

error: undefined reference to '__android_log_print'

代わりに使用しているアプリはほとんどありませんLOCAL_LDFLAGS。私は試してみましたが、うまくいきました。それはなぜです?またLOCAL_SHARED_LIBRARIES、同様に機能します。

4

1 に答える 1

1

明確な答えはありませんが、最近同じ問題と戦っていました。これが私の発見です。うまくいけば、誰かが確認します。

LOCAL_LDLIBS と LOCAL_SHARED_LIBRARIES は両方とも、ライブラリをリンクするために使用されます。ただし、LOCAL_SHARED_LIBRARIES は中間オブジェクトを探しており、見つからない場合はライブラリが再構築されています。

LOCAL_LDLIBS は、最終的なライブラリを見つけることを期待しています。

どちらも SDK と NDK で動作します。

Android プラットフォームのビルド中に LOCAL_LDLIBS が機能しないという問題が発生したか、より具体的なコンポーネントの 1 つであるカメラが発生しました。LOCAL_LDLIBS が機能しない理由は、リンク コマンドにまったく表示されないためです。

つまり、コンポーネント フォルダー (私の場合は cameraHAL) mm showcommands (最初にメイン フォルダーで . build/envsetup.sh を実行) 内でビルドすると、リンク コマンドは LOCAL_LDLIBS に指定されたものを何も示しません。

何故ですか?

ロジックは、アンドロイドを構築するときにすべてのソースを持っていることが期待されるため、LOCAL_SHARED_LIBRARIES を使用するのが正しい方法であると考えています。

LOCAL_LDFLAGS と LOCAL_LDLIBS。LOCAL_LDFLAGS は、リンクするライブラリだけでなく、任意のフラグを渡すために使用されるため、リンク コマンドに表示されます。

LOCAL_LDLIBS は、ライブラリのリンク専用であり、NDK/SDK でのみ使用できます。

于 2014-04-08T12:56:08.317 に答える