2013-03-20 9 views
18

libTest.soがあり、一部のデバイスで読み込まれません。 logcatはまったく役に立たない。 arm-linux-androideabi-readelf.exe -d libTest.soを使用すると、libTest.soに必要なすべての必要なライブラリを見ることができました。私はそれらをすべてローカルPCの同じフォルダに入れました。ldd相当のアンドロイド

どのシンボルが見つからず、どのライブラリにありますか?私はNDK(nm、readelf、objdumpなど)からの標準的なツールセットしか持っていません。私のlibTest.soとそれに依存するすべてのlibsを解析し、どのシンボルが私のlibがターゲットデバイスにロードされないのかを教えるように、どのツールとどのように使うことができるのですか?

答えて

18

アンドロイドデベロッパーのおかげです。私の機能リクエストが実装されました:) 今、私たちはndk-dependsという依存関係のトラブルシューティングを可能にするツールを持っています。

編集:完全なシンボル解決はできません。例えば。 Android-14に対してビルドし、古いAndroidsには存在しなかったメソッドを使用しようとすると、このツールは不足しているシンボルをリストしません。この部分は、ndk-dependsのTODOとして残されました。

0

あなたのような何かを行うことができます:lddは、ダイナミックローダーのラッパのように働くだけのシェルスクリプトですので、これはある

$ /lib/ld-linux.so.2 --list filename 

。動的ローダーの名前、つまりld- {version} .soは異なる場合があります。

+2

のAndroidは、 '/ libに/ LD-linux.so'' /システム/ binに/ linker'を使用していないように見えます。とにかく私は何かを出力するリンカを得ることができません –

+7

私は '/ system/bin/linker'を直接呼び出すときに'セグメンテーションフォールト 'を取得します。 – markshep

9

私はちょうど同じ問題に遭遇しましたが、ndkをインストールしたり、ソースツリー全体を把握してexeが何を探しているのか見当たりませんでした。

readelf --dynamic filename | grep NEEDED 

は、elfバイナリの動的ライブラリを表示します。アンドロイド端末における

関連する問題