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