android 编译 c 程序,Android上通过gcc编译普通的C程序

金泉
2023-12-01

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

[email protected]:/ $ cp /sdcard/main_exec /data/local/

cp /sdcard/main_exec /data/local/

cp: /data/local/main_exec: Permission denied

[email protected]:/ $ cp /sdcard/main_exec /data/local/tmp

cp /sdcard/main_exec /data/local/tmp

[email protected]:/ $ cd /data/local/

cd /data/local/

[email protected]:/data/local $ cd tmp

cd tmp

[email protected]:/data/local/tmp $ ls -l main_exec

ls -l main_exec

-rwxr-x--x shell shell 6260 2014-06-06 16:30 main_exec

[email protected]:/data/local/tmp $ chmod 751 main_exec

chmod 751 main_exec

[email protected]:/data/local/tmp $ ./main_exec

./main_exec

hello world通过adb push到sdcard上,然后进入shell模式,从sdcard复制到/data/local/tmp 下(注意我的n4手机上/data/local下权限不够,进入tmp可以)。

chmod 751 设置可执行程序权限,然后执行。!。

3.参考

原文:http://blog.csdn.net/ryfdizuo/article/details/28891649

 类似资料: