1.编译可执行程序

1.1 通过mk脚本编译 目录结构:
mk_appjnimain.cAndroid.mk
    Android.mk内容十分满简单:       
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:= main_execLOCAL_SRC_FILES := main.cinclude $(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
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.exe工具编译 目录结构:
gcc_appmain.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 shellshell@mako:/ $ cp /sdcard/main_exec /data/local/cp /sdcard/main_exec /data/local/cp: /data/local/main_exec: Permission denied1|shell@mako:/ $ cp /sdcard/main_exec /data/local/tmpcp /sdcard/main_exec /data/local/tmpshell@mako:/ $ cd /data/local/cd /data/local/shell@mako:/data/local $ cd tmpcd tmpshell@mako:/data/local/tmp $ ls -l main_execls -l main_exec-rwxr-x--x shell    shell        6260 2014-06-06 16:30 main_execshell@mako:/data/local/tmp $ chmod 751 main_execchmod 751 main_execshell@mako:/data/local/tmp $ ./main_exec./main_exechello 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. android NDK 开发环境配置
  2. Android命令大全
  3. Android(安卓)Studio 获取证书指纹SHA1
  4. 使用android中的handler延迟执行方法
  5. 【Android应用开发】Android(安卓)Studio 简介 (Android(安卓)St
  6. ant 打包android应用
  7. Android——从入门到放弃
  8. Android中pm命令用法详解
  9. Android实现点击两次返回键退出

随机推荐

  1. Android中资源文件夹res/raw和assets的使
  2. Android之实现RTL的ViewPager
  3. Android中图片的上传和下载
  4. Android(安卓)UI 之实现多级列表TreeView
  5. 第一个 Android(安卓)程序
  6. (4.1.19)【Android(安卓)UI设计与开发】第0
  7. 玩一下android的反编译和代码混淆
  8. [Android开发]Android中的消息机制
  9. phonegap+jquerymobile开发android的心得
  10. Android之串口通信基础