2012-01-02 14 views
24

Q1)私はアンドロイドエミュレータで簡単なCプログラムを実行したいと考えています。私はwindows xp OSを使用しています。私はアンドロイド開発のためにsdk, jdk, eclipseをインストールし、AVDにアンドロイドアプリケーションを実行するのに成功しました。AndroidシステムでC/C++プログラムをコンパイルして実行するには

Q2)私はちょうど、AVDにCプログラム(任意のJavaなし)を実行する方法があるかどうかを知る必要があります。私のマシンで私はアームをインストールし、それを使ってCプログラムをコンパイルしました。

Q3)また、コンパイルされたバイナリをアンドロイドデバイスまたはAVDにプッシュし、アンドロイドデバイスの端末またはAVDを使用して実行することも可能ですか?

答えて

4

Native Development Kitをダウンロードする必要があります。

+0

私はすでにそれをやっていますが、次に何をするのに役立つものは何も見つかりませんでしたか? – user1125898

+0

@ user1125898 - 役に立つものが見つからないということはどういう意味ですか? NDKは、C/C++でネイティブコードを記述するためのものです。私が提供したリンクの一番下までスクロールすると、開始のセクションとNDKディスカッショングループへのリンクが表示されます。 –

8

あなたはNDKをインストールしている場合は、この他の方法で興味を持っている場合は正常、その後、これは私も欲しい

http://shareprogrammingtips.com/c-language-programming-tips/how-can-i-write-applications-in-c-or-c-for-android/

を助けること

http://developer.android.com/sdk/ndk/overview.html#samples

それでサンプルアプリケーションを起動コンパイルされたバイナリを アンドロイドデバイスまたはAVDにプッシュし、アンドロイドデバイスまたはAVDのターミナルを使用して実行することは可能ですか?ここ

あなたはNestedVM

NestedVMのJavaバイトコードのバイナリ変換を提供を見ることができます。これは、GCCをMIPSバイナリにコンパイルし、それをJavaクラスファイルに変換することによって行われます。したがって、C、C++、Fortran、またはGCCでサポートされている他の言語で書かれたアプリケーションは、ソースを変更せずに100%純粋なJavaで実行できます。


例: Cross compile Hello world C program and run it on android

12

あなたはARMクロスコンパイラを使ってCプログラムをコンパイルすることができます

arm-linux-gnueabi-gcc -static -march=armv7-a test.c -o test 

を次に、あなたがどこかにあなたのコンパイルされたバイナリファイルをプッシュすることができます(押しませんそれはSDカードに):

adb push test /data/local/tmp/test 
+1

私は 'Fatal:Kernel too old。セグメンテーションエラー。 私のubuntuにはカーネル3.2.0-38がありますが、Androidは通常2.6.xxで動作します バイナリを古いglibcに静的にリンクするようにコンパイラーに強制する方法を知っていますか? –

+0

@TranSonHai:ubuntu tooolchainではなく、Android NDKとその 'bionic'ランタイムライブラリを使うべきです。 –

+1

'-march = armv7'は' -march = armv7-a'に変更する必要があります。 – Javad

0

Android搭載端末で直接Java/C/C++アプリケーションをコンパイルして実行するには、Google PlayのTerminal IDE環境をおすすめします。 Android APK、Java、C、C++を自分のデバイスで直接開発しコンパイルするのは非常に滑らかなパッケージです。インタフェースはすべてコマンドラインと "vi"に基づいているので、本当のLinuxの感じがします。 gnu C/C++の実装が付属しています。

さらに、telnetおよびtelnetサーバーアプリケーションが組み込まれているので、PCと大きなキーボードですべてのプログラミングを実行できますが、デバイスで作業できます。 root権限は必要ありません。

関連する問題