Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android上通過gcc編譯普通的C程序

Android上通過gcc編譯普通的C程序

編輯:關於Android編程

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\ndk_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
1.2 通過android ndk提供的arm-linux-androideabi-gcc.exe工具編譯 目錄結構:
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\ndk_tutorial\android_build_c_exec\gcc_app>adb push main_exec /sdcard/
1528 KB/s (6260 bytes in 0.004s)

E:\GitHub\ndk_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 下(注意我的n4手機上/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

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved