AndroidデバイスでLinuxバイナリを実行しようとすると「そのようなファイルまたはディレクトリはありません」というメッセージが表示される 質問する

AndroidデバイスでLinuxバイナリを実行しようとすると「そのようなファイルまたはディレクトリはありません」というメッセージが表示される 質問する

Android GCC ツールチェーン (プレーン Linux、Android や NDK なし) を使用してネイティブ Linux ARM バイナリを構築しました。

私は、自分の PC から adb シェル経由で、Android 4 を実行しているタブレットに接続しました。そのバイナリをそのデバイスの /system/bin に「adb push」して、そこで実行できるようにしました。chmod 777 で実行可能にマークしました。

実行しようとすると、「そのようなファイルまたはディレクトリはありません」というメッセージが表示されます。

詳細情報: この小さなプログラムは、fc および fm ライブラリを使用します。ARM ツールチェーンには、私が見つけた例によると通常はスタートアップ コードを含む crt1 が含まれていないようです。そのため、Android ビルドでそれを含むファイルを検索し、crtbegin_dynamic と crtend_dynamic を見つけましたが、_static に相当するものについては、ペアの 1 つが欠落していたため、GCC に -static を渡しませんでした。これは、「-nostdlib」でビルドされました。

何が問題なのでしょうか?

ベストアンサー1

Ubuntu 64 のような 64 ビット プラットフォームで作業している場合は、このヒントが問題の解決に役立つ可能性があります。apt-get を使用して i386 32 ビット互換ライブラリをインストールしてみてください。

sudo apt-get install ia32-libs

私にとってはうまくいきました。同じ問題に遭遇した場合はお知らせください。

Ubuntu 13.10以降の場合

aditya はこの回答のコメントで次のように述べています:

Ubuntu 13.10 では、これを実行する必要があります: sudo apt-get install lib32z1、次のように C++ stdlibs も取得する必要があるかもしれません:sudo apt-get install lib32ncurses5 lib32stdc++6

おすすめ記事