2 つの実行可能ファイルがあり、どちらもクロス コンパイルして Android で実行します。デバイスの同じディレクトリに両方を配置しました。ld-linux.so.3 を含め、それらが依存するすべての共有ライブラリを同じディレクトリに配置しました。次を使用して実行可能ファイルを実行します。
ld-linux.so.3 --library-path /path/to/libraries 実行可能ファイル名
任意のユーザーとして実行している場合、どちらも古いバージョンの Android で動作します。ルートとして実行している場合、どちらも Android の最新バージョンで動作します。任意のユーザーとして実行している場合、Android の最新バージョンで動作するのは 1 つだけです。代わりに、次のようになります。
共有オブジェクトからセグメントをマップできませんでした: executable_name 操作は許可されていません
実行されない実行可能ファイルとの違いを見つけるにはどうすればよいですか?
私はオンラインで多くのことを読み、ほとんどの人がこのエラーを受け取ります。
A)依存しているライブラリの1つまたは実行可能ファイル自体に対する実行権限がありません。
また
B) NOEXEC としてマウントされているディレクトリから実行しようとしています。
これらはどちらもそうではないようです。すべてのライブラリを見つけることができ、任意のライブラリを単独でロードして、解決に依存している他のものを確認できます。また、対象のディレクトリから基本的なスクリプトを実行できます。
Android の新しいバージョンである Jelly Bean は別の Linux カーネル バージョンであり、それが関連しているのではないかと思います。
何を与える?どうすればデバッグできますか?