23

一部のデバイスにロードされないlibTest.soがあります。logcatは絶対に役に立たない。を使用しarm-linux-androideabi-readelf.exe -d libTest.soて、libTest.soが必要とするすべての必要なライブラリを確認することができました。それらをすべてローカルPCの同じフォルダーに取り込みました。

どのシンボルがどのライブラリにないかを確認するにはどうすればよいですか?NDKの標準的なツールセット(nm、readelf、objdumpなど)しかありません。どのツールとどのように使用すれば、libTest.soとすべての依存ライブラリも解析され、どのシンボルがターゲットデバイスへのライブラリのロードを妨げているかがわかります。

4

4 に答える 4

20

Android開発者に感謝します。私の機能リクエストが実装されました:)これで、依存関係のトラブルシューティングを可能にするツールであるndk-dependsができました。

編集:しかし、それは完全なシンボル解決を行いません。たとえば、Android-14に対してビルドし、古いAndroidには存在しなかったメソッドを使用しようとすると、このツールは欠落しているシンボルを一覧表示しません。この部分は、ndk-dependsでTODOとして残されました。

于 2013-10-05T22:40:29.043 に答える
18

NDKがない場合は、次のことを試してください。

readelf --dynamic filename | grep NEEDED

elfバイナリのダイナミックライブラリを表示します。

于 2016-10-19T11:41:15.217 に答える
5

Androidターミナルでこれを試してください:
strings /path/to/your/file | grep ^lib ここにあります: https ://forum.xda-developers.com/showthread.php?t = 2737126&page = 5

于 2017-02-24T22:13:37.607 に答える
0

あなたは次のようなことをすることができます:

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

これは、lddが動的ローダーのラッパーのように機能する単なるシェルスクリプトであるためです。動的ローダーの名前、つまりld-{version}.soは異なる場合があります。

于 2013-08-15T17:27:46.043 に答える