私はgccを使ってubuntuでコンパイルされたCプログラムが必要です。私はアンドロイド端末で実行可能ファイルを実行したい。私が実行すると、 "ファイルまたはディレクトリが見つかりません"または "実行可能でない:ELF32"のいずれかが表示されます。 Android端末でコードを実行します。 gccに他のコンパイラを使用する方法やフラグがあるので、アンドロイド端末でコードを実行できます。アンドロイド-XX端末でCプログラムを実行するには?
0
A
答えて
0
AndroidはUbuntuと同じシステムライブラリを使用しないため、見つからないでしょう。
2つの解決策があります。
は、必要なライブラリをコピーします。
Ubuntuで同じファイルシステムの場所に置くことができれば、ld-linux.soを手動で実行してライブラリを見つける場所を指定する必要があります。あるいは、プログラムを再リンクして、非標準的な場所に動的リンカーとライブラリを見つけることができます。 chrootを使うこともできますが、それにはrootが必要です。chrootバイナリを見つける必要があります。
スタティックリンクを使用してください。
これは通常、GCCに
-static
を渡すことを意味します。依存性のない完全に自己完結型であるはるかに大きなバイナリが得られます。すべてのライブラリの静的バージョンが、ビルドシステムで使用可能であることが必要です。また、DNSルックアップなどの一部の機能では、共有ライブラリが常に必要になるため、この方法では機能しません。
でも、いくつかのLinux機能が動作しないと予想する必要があります。基本的に、/ etcにハードウェアの機能や設定ファイルが必要なものは、多大な労力を必要とします。これを既に行っている様々なプロジェクトがあります( "linux chroot android"を検索してください)。
「実行不可:ELF32」というメッセージの意味はわかりませんが、32ビットまたは64ビットの実行可能ファイルをビルドしているか、Androidバイナリが使用しているかを確認する必要があります(file <whatever>
)。
関連する問題
- 1. 自分のPC端末を使ってAndroid端末でCプログラムをコンパイルして実行するには?
- 2. gnome端末でCLionプログラムを実行するには?
- 3. プログラムで端末でコマンドを実行する
- 4. c - 端末行列効果をプログラムする方法は?
- 5. AndroidプログラムでLinux端末コマンドを実行する
- 6. 端末のどこからでもプログラムを実行する
- 7. 実行PHPスクリプトは、端末
- 8. 端末でスクリプトを実行するプロセス
- 9. Linux端末でファイルを実行する
- 10. 端末内でコマンドを実行して端末を使用する方法は?
- 11. 端末でKotlinプログラムを実行できません
- 12. Javaで端末から外部プログラムを実行
- 13. パテ端末が閉じた後でもJavaプログラムを実行
- 14. ssh端末挿入端末プログラム名
- 15. python cursesプログラムから端末テキストエディタを実行
- 16. 端末からMacでfsharpテストを実行するには?
- 17. Ubuntu端末でPyQt4アプリを実行するには?
- 18. 端末のJupyterでpythonスクリプトを実行するには?
- 19. 端末でJavaクラスを実行するには
- 20. 私の端末ログイン時に自動的にプログラムを実行する方法
- 21. 端末のフルスクリーンでPythonスクリプトを実行
- 22. sqlプラス端末で.sqlファイルを実行
- 23. 端末経由でjavaインスタンスメソッドを実行
- 24. 携帯端末でmapreduceを実行中
- 25. iphoneアプリを端末で実行
- 26. Vm virtualbox ubuntu、端末から.cファイルを実行できない
- 27. コマンドを入力として受け取り、端末で実行するプログラム
- 28. Cプログラムはxcodeでコンパイルされますが、端末内で無限ループを実行します
- 29. whats端末で実行してスクリプトファイルを実行します。
- 30. 端末から実行するJavaプログラムへのコマンドラインインターフェイスを作成する
私は-staticでコンパイルしましたが、2番目のエラーを示しています。 "not executable:ELF32"。アンドロイドプラットフォーム用にコンパイルされる-mandroidのようなgccには、いくつかのアンドロイド固有のフラグがあります。しかし、 "/ usr/bin/ld:のようなエラーはcrtbegin_static.oを見つけることができません:そのようなファイルやディレクトリはありません。 collect2:エラー:ldは1終了ステータスを返しました"。 –
ログに手掛かりがありますか? ( '' logcat'を実行してください。)AndroidはSELinuxを使用しているので、あなたの方法でセキュリティポリシーが存在する可能性があります。 – ams