2011-08-24 9 views
4

その背景:Android上のダイナミックリンカでデバッグ出力を有効にする方法は?

私のアプリケーションは、リンク段階で実行すると、以下のMSGの取得に失敗した:lib1.so

実行可能ファイルをリンクすることはできません...

link_image [1995]

このアプリケーションは、次のようにいくつかの動的ライブラリに依存しています。

アプリにはlib1、lib1 dlopenのlib2が必要で、lib1にはアプリケーションによってエクスポートされたシンボル(グローバル変数)があります。

私はlib2を簡単なプログラムでテストしました。これは問題ありません。だから私は失敗はのリンクステージでlib1によるだと思う(私は、アプリケーションの必要性のある他のすべてのライブラリが現在のdirにあり、 "./"がLD_LIBRARY_PATHに追加されていることを約束することができる) /システム/ libにまでLIBS)

質問:私は、詳細なエラーメッセージを取得するには、リンカのデバッグ出力を有効にするにはどうすればよい

  1. 他の提案はありますか?

EDIT1:いくつかのより多くのテストの後 、リンクエラーが

んAndroidは、余分なビルドフラグがグローバル参照を有効にする必要がmain.cの中で定義されているLIB1が参照するグローバルシンボルが原因であると思われますメインのvar?

+0

これには誰も答えませんか? –

答えて

1

再コンパイルする必要があります。ここでは、適切な(ブランチ、タグ)ソースグラブ:Android.mkで

https://github.com/android/platform_bionic/tree/master/linker

を、あなたはこれを1に設定したい:

# Set LINKER_DEBUG to either 1 or 0 
# 
LOCAL_CFLAGS += -DLINKER_DEBUG=0 

あなたが下に行きたい場合は、TRACEをチェックアウト()とDL_ERR()を呼び出します。ご覧のとおり、TRACE()はプリプロセッサで定義されており、コンパイルされています。そうしないと、debug_verbosityまたはそのチェックのために自分の値ですばやくパッチを当てることができました。

関連する問題