android添加c语言的可执行程序
在android源码的external目录下添加test目录。在test目录下新建test.c文件和Android.mk文件。
test.c文件例如:
#include <stdio.h> int main() { printf("hello world\n"); return 0; }
Android.mk文件:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := my_test LOCAL_CFLAGS := -Werror LOCAL_SRC_FILES += test.c LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) LOCAL_MODULE_TAGS := optional include $(BUILD_EXECUTABLE)
这样就完成了代码的编写,下一步在android根目录下使用mmm命令进行编译:
mmm ./external/test
这样编译出来的文件可以在开发板的vendor/bin目录下找到。
下面是Android.mk的部分介绍:
LOCAL_PATH := $(call my-dir)
首先LOCAL_PATH变量用于查找源文件,上面语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径
Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始。以include $(BUILD_XXX)结束。
LOCAL_MODULE_PATH: 最后的目标安装路径,TARGET_OUT_VENDOR_EXECUTABLES是安装在vendor/bin下面。
LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
include $(BUILD_STATIC_LIBRARY)表示编译成静态库
include $(BUILD_SHARED_LIBRARY)表示编译成动态库。
include $(BUILD_EXECUTABLE)表示编译成可执行程序