android上でc/C++開発テスト(転)を行います.
http://sensen.blog.51cto.com/1645588/322057
Android Cプログラミング技術実行シミュレータ
emulator-consone
*シミュレータのuserdata.imgファイルにファイルを書き込む
adb push
*サブディレクトリを含むディレクトリをシミュレータにコピーする
adb push
*カタログをシミュレータから拷問する
adb pull
*シミュレータをarmコードで動作させます.
GNU/ARM Linuxコンパイラを使ってあなたのアプリケーションをコンパイルすればいいです.
*シミュレータ内でshellを実行するには、シミュレータを先に実行する必要があります.
adb shell
*シミュレータの一つのコンソールプログラムを実行します.
adb shell
*シミュレータのコンソール接続
telnet local host 5554/6/8
Cプログラムを実行
参考文献
Native C「Hello World」working in emaulator
http://groups.google.com/group/a …wsひthread/threa…
Native Cアプリfor Android
http://benno.id.au/blog/2007/11/13/android-native-apps
ステップ
*GNU/ARMコンパイルツールをダウンロードする
http://www.codesourcery.com/gnu_toolchains/arm/download.
*c/c+コードを作成します.
*GNU/ARM Linuxツールを使用してアプリケーションを作成し、ダイナミックリンクライブラリを使用しません.
1.ARM C++クロスコンパイラをダウンロードするhttp://www.codesourcery.com/gnu_toolchains/arm/potal/subscription 3057
2.ローカルC++コードを作成し、ハローWolrdのように標準ライブラリSTLを使用することができます.コンパイルされたコマンドラインは以下の通りです.
3.シミュレータを実行し、cmdでsdkToolsディレクトリ夏の星adb pushendoid 123/system/sbin/android 123
4.アクセス権限を設定し、LinuxのShellを通じて、cmdにすべてのユーザの完全制御権限adb shell chmod 777/system/sbin/android 123を設定する.
5.このandroid 123プログラムを実行し、入力する
AndroidプラットフォームでC/C++プログラムとライブラリをテストします.
まず、クロスコンパイルツールGNU/ARM Linux gccをダウンロードしてインストールします.
http://www.codesourcery.com/gnu_toolchains/arm/download.
設置時に直接に解圧すればいいです.PATH環境変数を設定します.
簡単なCコード:
萼arm-none-linux-gnueabi-gcc test.c-o test-static
-staticオプションはここで必要です.でないと、androidプラットフォームはこのプログラムを実行しません.
これはこのプラットフォーム上のC/C+++ライブラリがC/C++プログラムに動的に接続されないことを示している.
toolsディレクトリに入り、adbツールでandroidプラットフォームにダウンロードして、data/dataディレクトリに入れます.
ヽ.adb push test/data/data
プログラムを実行します.
ヽoo...........................................................
ヽoo.ツ
*
**
****
****
****
****
****
******
******
********
********
ok,It’s done!
C++プログラムのような方法ですが、コンパイラを変えただけです.arm-none-linux-gnueabi-g+.
C++のコード例を添付します.
テストを経て、自分で書いたライブラリを/system/libディレクトリの下に置いて、メインプログラムを書いて動的に接続しても、実行できません.
このプラットフォームは制限されているようです.C/C++のプログラムを実行する時に、これらのC/C++ライブラリに動的に接続しないようにします.
回転:
http://blog.chinaunix.net/u3/90973/showart_1958940.
Android Cプログラミング技術実行シミュレータ
emulator-consone
*シミュレータのuserdata.imgファイルにファイルを書き込む
adb push
*サブディレクトリを含むディレクトリをシミュレータにコピーする
adb push
*カタログをシミュレータから拷問する
adb pull
*シミュレータをarmコードで動作させます.
GNU/ARM Linuxコンパイラを使ってあなたのアプリケーションをコンパイルすればいいです.
*シミュレータ内でshellを実行するには、シミュレータを先に実行する必要があります.
adb shell
*シミュレータの一つのコンソールプログラムを実行します.
adb shell
*シミュレータのコンソール接続
telnet local host 5554/6/8
Cプログラムを実行
参考文献
Native C「Hello World」working in emaulator
http://groups.google.com/group/a …wsひthread/threa…
Native Cアプリfor Android
http://benno.id.au/blog/2007/11/13/android-native-apps
ステップ
*GNU/ARMコンパイルツールをダウンロードする
http://www.codesourcery.com/gnu_toolchains/arm/download.
*c/c+コードを作成します.
*GNU/ARM Linuxツールを使用してアプリケーションを作成し、ダイナミックリンクライブラリを使用しません.
ex. arm-none-linux-gnueabi-g++.exe -static -o hello HelloAndroid.cpp
*起動シミュレータ$SDK_ROOT/tools/emulator.exe
*コマンドラインウィンドウでabdを実行し、コンパイルされたハロープログラムをシミュレータのディスクに入れます. adb push hello /system/sbin/hello
*ハローファイルを実行可能なプログラムに変更します.chmod ugo+xを使用しないでください. adb shell chmod 777 /system/sbin/hello
*ハロープログラムの実行 adb shell
cd /system/sbin/
hello
EXAMPLE HELLO WORLD CODE
//
// HelloAndroid.cpp
//
//
#include
using std::cin;
using std::cout;
using std::endl;
class MyName
{
public:
void getname( void );
void sayhello( void );
private:
char name[ 255 ];
};
void MyName::getname( void )
{
cout << "What is your name? ";
cin >> name;
}
void MyName::sayhello( void )
{
cout << "Welcome " << name << " to the world of Android" << endl;
}
MyName name;
int main( int argc, char *argv[] )
{
name.getname();
name.sayhello();
return 0;
}
AndroidコンパイルローカルC++プログラム方法はAndroidプラットフォーム上のプログラムをJava形式でDalvikシミュレータ上で実行していますが、AndroidはLinuxカーネルシステムとしてNavtive C++プログラムを完全に実行できます.主なステップは以下の通りです.1.ARM C++クロスコンパイラをダウンロードするhttp://www.codesourcery.com/gnu_toolchains/arm/potal/subscription 3057
2.ローカルC++コードを作成し、ハローWolrdのように標準ライブラリSTLを使用することができます.コンパイルされたコマンドラインは以下の通りです.
arm-none-linux-gnueabi-g++.exe -static -oandroid123 android123.cpp
まず、arm-none-linux-gnueabi-g++を実行します.exeプログラム-staticパラメータは静的なライブラリを表します.-oは出力名android 123で、最後のandroid 123.ppはソースコードです.3.シミュレータを実行し、cmdでsdkToolsディレクトリ夏の星adb pushendoid 123/system/sbin/android 123
4.アクセス権限を設定し、LinuxのShellを通じて、cmdにすべてのユーザの完全制御権限adb shell chmod 777/system/sbin/android 123を設定する.
5.このandroid 123プログラムを実行し、入力する
adb shell cd /system/sbin/android123
で結構ですAndroidプラットフォームでC/C++プログラムとライブラリをテストします.
int main( int argc, char *argv[] )
{
name.getname();
name.sayhello();
return 0;
Androidプラットフォームに標準Cライブラリが付いています.Cプログラムを書いて上で実行できるかどうか試してみます.まず、クロスコンパイルツールGNU/ARM Linux gccをダウンロードしてインストールします.
http://www.codesourcery.com/gnu_toolchains/arm/download.
設置時に直接に解圧すればいいです.PATH環境変数を設定します.
簡単なCコード:
test.c
#include <stdio.h>
int main()
{
int i,j;
for(i=0;i<=10;i++)
{
for(j=0;j<=i;j++)
printf(”*”);
printf(”n”);
}
return 0;
}
ダウンロードしたばかりのクロスコンパイルツールでソースコードをコンパイルします.萼arm-none-linux-gnueabi-gcc test.c-o test-static
-staticオプションはここで必要です.でないと、androidプラットフォームはこのプログラムを実行しません.
これはこのプラットフォーム上のC/C+++ライブラリがC/C++プログラムに動的に接続されないことを示している.
toolsディレクトリに入り、adbツールでandroidプラットフォームにダウンロードして、data/dataディレクトリに入れます.
ヽ.adb push test/data/data
プログラムを実行します.
ヽoo...........................................................
ヽoo.ツ
*
**
****
****
****
****
****
******
******
********
********
ok,It’s done!
C++プログラムのような方法ですが、コンパイラを変えただけです.arm-none-linux-gnueabi-g+.
C++のコード例を添付します.
//
// HelloAndroid.cpp
//
//
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
class MyName
{
public:
void getname( void );
void sayhello( void );
private:
char name[ 255 ];
};
void MyName::getname( void )
{
cout << “What is your name? “;
cin >> name;
}
void MyName::sayhello( void )
{
cout << “Welcome “ << name << ” to the world of Android” << endl;
}
MyName name;
}
上のアプリケーションはコンパイルする時-staticオプションを加えなければなりません.つまりコンパイルする時に関数をプログラムに静的にコンパイルします.実行する時はダイナミックに接続しなくてもいいです.このオプションを追加しないと、Androidのプラットフォームでは動作を停止します.テストを経て、自分で書いたライブラリを/system/libディレクトリの下に置いて、メインプログラムを書いて動的に接続しても、実行できません.
このプラットフォームは制限されているようです.C/C++のプログラムを実行する時に、これらのC/C++ライブラリに動的に接続しないようにします.
回転:
http://blog.chinaunix.net/u3/90973/showart_1958940.