Androidでは通常のCプログラムをgccでコンパイル


1.実行可能プログラムのコンパイル
1.1 mkスクリプトによるコンパイル
ディレクトリ構造:
mk_app
	jni
		main.c
		Android.mk
 
  
Android.mk内容十分满简单:
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE:= main_exec
LOCAL_SRC_FILES := main.c

include $(BUILD_EXECUTABLE)
コマンドの下で、cdをjniの上位ディレクトリに移動し、ndk-buildコマンドを実行します.
E:\GitHub
dk_tutorial\android_build_c_exec\mk_ap>ndk-build [armeabi] Compile thumb : main_exec <= main.c [armeabi] Executable : main_exec [armeabi] Install : main_exec => libs/armeabi/main_exec

jni兄弟ディレクトリでlibs/armeabi/で実行可能プログラムmain_を生成exec
ndk-buildコマンド拡張:
#       
ndk-build -c jni_dir

#     build:
ndk-build -B

#   build   ,     g++  
ndk-build V=1 

ref :  http://weimingtom.iteye.com/blog/1018710
1.2 android ndkによって提供されたarm-linux-androideabi-gcc.Exceツールコンパイル
ディレクトリ構造:
gcc_app
	main.c
コマンドライン、cdからgcc_appディレクトリの下で、次のコマンドを実行します.
D:\android-ndk-r9b-windows-x86\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-gcc.exe --sysroot=D:\android-ndk-r9b-windows-x86\platforms\android-13\arch-arm -o main_exec main.c

現在のディレクトリの下でmain_を生成exec実行可能プログラム.
--sysrootは実行システムのincludeとlibディレクトリで、削除すると定義の山が見つかりません.具体的にはgcc--helpで見ることができます.
2.adbはmain_execが携帯電話にコピーする具体的な操作は以下の通りです.
E:\GitHub
dk_tutorial\android_build_c_exec\gcc_app>adb push main_exec /sdcard/ 1528 KB/s (6260 bytes in 0.004s) E:\GitHub
dk_tutorial\android_build_c_exec\gcc_app>adb shell shell@mako:/ $ cp /sdcard/main_exec /data/local/ cp /sdcard/main_exec /data/local/ cp: /data/local/main_exec: Permission denied 1|shell@mako:/ $ cp /sdcard/main_exec /data/local/tmp cp /sdcard/main_exec /data/local/tmp shell@mako:/ $ cd /data/local/ cd /data/local/ shell@mako:/data/local $ cd tmp cd tmp shell@mako:/data/local/tmp $ ls -l main_exec ls -l main_exec -rwxr-x--x shell shell 6260 2014-06-06 16:30 main_exec shell@mako:/data/local/tmp $ chmod 751 main_exec chmod 751 main_exec shell@mako:/data/local/tmp $ ./main_exec ./main_exec hello world
adb pushを介してsdcardに移行し、shellモードに入り、sdcardから/data/local/tmpにコピーします(私のn 4携帯電話の/data/localの下で権限が足りないことに注意して、tmpに入ってもいいです).
chmod 751実行可能プログラム権限を設定し、実行します.!
3.参考
1.  http://stackoverflow.com/questions/21424366/how-to-use-arm-linux-androideabi-compiler
2.  http://stackoverflow.com/questions/9868309/how-can-i-run-c-binary-executable-file-in-android-from-android-shell
関連コード:https://github.com/dizuo/ndk_tutorial/tree/master/android_build_c_exec