Android系统的Android.mk学习摘要
单击上方的嵌入式开发圈,并记住关注我们! 1.将当前模块的编译路径设置为当前文件夹路径LOCAL_PATH:= $(call my-dir)2.清理编译环境中使用的变量(可能已由其他模块设置)包括$(CLEAR_VARS )3.模块编译变量变量用途LOCAL_SRC_FILES当前模块中包含的源代码文件LOCAL_MODULE当前模块的名称。这个名字应该是唯一的。
模块之间的依赖关系是此名称引用的LOCAL_C_INCLUDES C / C ++语言所需的头文件的路径。 LOCAL_STATIC_LIBRARIES当前在静态编译模块时,静态库LOCAL_SHARED_LIBRARIES在运行时当前模块依赖的动态库LOCAL_CFLAGS C / C ++编译器参数包括$(BUILD_EXECUTABLE)#-I $(LOCAL_C_INCLUDES)指定头文件搜索路径#- l $(LOCAL_SHARED_LIBRARIES)由指令gcc链接的动态库$(LOCAL_CFLAGS)$(LOCAL_SRC_FILES)-o $(LOCAL_MODULE)-I $(LOCAL_C_INCLUDES)$(LOCAL_STATIC_LIBRARIES)-l $(LOCAL_LIBRARIES)Java模块取决于LOCAL_LIBRARIES当前模块当前模块依赖于Java静态库LOCAL_PACKAGE_NAME当前模块的APK应用程序的名称LOCAL_CERTIFICATE签名当前应用程序的证书的名称LOCAL_MODULE_TAGS Android.mk需要的当前模块中包含的标签,一个模块可以包含多个标签标签的值可以是debug,eng,tests,sample或可选的build / core /definitions.mk通常使用以下函数来获取上述环境变量的值:提供配置编译所需的函数$(调用my-dir)获取当前文件夹路径$(调用all-subdir-java-files)获取当前目录子目录$(下的all-java-files-under,目录)下的所有java源代码文件获取指定目录下的所有Java文件$(call all-c-files-under,目录)下的所有Java文件获取指定目录下的所有C语言文件$ (调用all-Iaidl-files-under,目录)获取指定目录中的所有AIDL文件$(调用all-makefiles-under,目录)获取指定目录中的所有Make文件。
4.模块类型BUILD_EXECUTABLE编译目录中的可用文件。目标机器执行文件(ELF)BUILD_STATIC_LIBRARY& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;目标计算机上的库(* .a& nbsp;编译时使用)BUILD_SHARED_LIBRARY& nbsp;& nbsp;& nbsp ;  & nbsp;& nbsp;& nbsp;& nbsp;在目标计算机上编译动态库文件(* .so)BUILD_JAVA_LIBRARY& nbsp;& nbsp;& nbsp;& nbsp;编译目标机器上的动态库文件Java动态库BUILD_STATIC_JAVA_LIBRARY编译目标机器BUILD_PACKAGE上的Java静态库;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;编译目标机器5上的java包,几个通用模板5.1,用于编译可执行程序LOCAL_PATH的模板:= $(call my-dir)#include $(CLEAR_VARS)LOCAL_SRC_FILES:= main。
cLOCAL_MODULE:=& nbsp; test_exe#LOCAL_C_INCLUDES:=#LOCAL_STATIC_LIBRARIES :=#LOCAL_SHARED level_LIBRARIES& nbsp;:= include& nbspEXEEXE level_LIBRARIES& nbsp; CABLE =说明:=表示赋值,$表示变量的值)LOCAL_SRC_FILES添加到源文件路径,LOCAL_C_INCLUDES添加到需要包含的头文件路径,LOCAL_STATIC_LIBRARIES添加到静态库的名称( * .a)需要链接,LOCAL_SHARED_LIBRARIES添加需要链接的动态库的名称(* .so),LOCAL_MODULE表示模块的最终名称,而BUILD_EXECUTABLE则将编译表示为可执行程序。 5.2。
编译静态库模板LOCAL_PATH& nbsp;:=& nbsp; $(call& nbsp; my-dir)& nbsp; include& nbsp; $(CLEAR_VARS)& nbsp;& nbsp; LOCAL_SRC_FILES:=& nbsp; helloworld.cLOCAL_MODULE:=& nbsp; libtest_static#LOCAL_C_INCLUDES& nbsp;:=#LOCAL_STATIC_LIBRARIES& nbsp;:=#LOCAL_SHARED_LIBRARIES& nbsp;:= include& nbLDIC STATIC STATIC上面的$(LIB)静态库。 5.3。
编译动态库模板LOCAL_PATH :=& nbsp; $(call& nbsp; my-dir)include& nbsp; $(CLEAR_VARS)LOCAL_SRC_FILES:=& nbsp;& nbsp;& nbsp;& n nbsp;& nbsp;& nbsp; helloworld.cLOCAL_MODULE:=& nbsp; libtest_sharedTARGET_PRELINK_MODULES& nbsp :: =& nbsp; false#LOCAL_C_INCLUDES。
模块之间的依赖关系是此名称引用的LOCAL_C_INCLUDES C / C ++语言所需的头文件的路径。 LOCAL_STATIC_LIBRARIES当前在静态编译模块时,静态库LOCAL_SHARED_LIBRARIES在运行时当前模块依赖的动态库LOCAL_CFLAGS C / C ++编译器参数包括$(BUILD_EXECUTABLE)#-I $(LOCAL_C_INCLUDES)指定头文件搜索路径#- l $(LOCAL_SHARED_LIBRARIES)由指令gcc链接的动态库$(LOCAL_CFLAGS)$(LOCAL_SRC_FILES)-o $(LOCAL_MODULE)-I $(LOCAL_C_INCLUDES)$(LOCAL_STATIC_LIBRARIES)-l $(LOCAL_LIBRARIES)Java模块取决于LOCAL_LIBRARIES当前模块当前模块依赖于Java静态库LOCAL_PACKAGE_NAME当前模块的APK应用程序的名称LOCAL_CERTIFICATE签名当前应用程序的证书的名称LOCAL_MODULE_TAGS Android.mk需要的当前模块中包含的标签,一个模块可以包含多个标签标签的值可以是debug,eng,tests,sample或可选的build / core /definitions.mk通常使用以下函数来获取上述环境变量的值:提供配置编译所需的函数$(调用my-dir)获取当前文件夹路径$(调用all-subdir-java-files)获取当前目录子目录$(下的all-java-files-under,目录)下的所有java源代码文件获取指定目录下的所有Java文件$(call all-c-files-under,目录)下的所有Java文件获取指定目录下的所有C语言文件$ (调用all-Iaidl-files-under,目录)获取指定目录中的所有AIDL文件$(调用all-makefiles-under,目录)获取指定目录中的所有Make文件。
4.模块类型BUILD_EXECUTABLE编译目录中的可用文件。目标机器执行文件(ELF)BUILD_STATIC_LIBRARY& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;目标计算机上的库(* .a& nbsp;编译时使用)BUILD_SHARED_LIBRARY& nbsp;& nbsp;& nbsp ;  & nbsp;& nbsp;& nbsp;& nbsp;在目标计算机上编译动态库文件(* .so)BUILD_JAVA_LIBRARY& nbsp;& nbsp;& nbsp;& nbsp;编译目标机器上的动态库文件Java动态库BUILD_STATIC_JAVA_LIBRARY编译目标机器BUILD_PACKAGE上的Java静态库;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;& nbsp;编译目标机器5上的java包,几个通用模板5.1,用于编译可执行程序LOCAL_PATH的模板:= $(call my-dir)#include $(CLEAR_VARS)LOCAL_SRC_FILES:= main。
cLOCAL_MODULE:=& nbsp; test_exe#LOCAL_C_INCLUDES:=#LOCAL_STATIC_LIBRARIES :=#LOCAL_SHARED level_LIBRARIES& nbsp;:= include& nbspEXEEXE level_LIBRARIES& nbsp; CABLE =说明:=表示赋值,$表示变量的值)LOCAL_SRC_FILES添加到源文件路径,LOCAL_C_INCLUDES添加到需要包含的头文件路径,LOCAL_STATIC_LIBRARIES添加到静态库的名称( * .a)需要链接,LOCAL_SHARED_LIBRARIES添加需要链接的动态库的名称(* .so),LOCAL_MODULE表示模块的最终名称,而BUILD_EXECUTABLE则将编译表示为可执行程序。 5.2。
编译静态库模板LOCAL_PATH& nbsp;:=& nbsp; $(call& nbsp; my-dir)& nbsp; include& nbsp; $(CLEAR_VARS)& nbsp;& nbsp; LOCAL_SRC_FILES:=& nbsp; helloworld.cLOCAL_MODULE:=& nbsp; libtest_static#LOCAL_C_INCLUDES& nbsp;:=#LOCAL_STATIC_LIBRARIES& nbsp;:=#LOCAL_SHARED_LIBRARIES& nbsp;:= include& nbLDIC STATIC STATIC上面的$(LIB)静态库。 5.3。
编译动态库模板LOCAL_PATH :=& nbsp; $(call& nbsp; my-dir)include& nbsp; $(CLEAR_VARS)LOCAL_SRC_FILES:=& nbsp;& nbsp;& nbsp;& n nbsp;& nbsp;& nbsp; helloworld.cLOCAL_MODULE:=& nbsp; libtest_sharedTARGET_PRELINK_MODULES& nbsp :: =& nbsp; false#LOCAL_C_INCLUDES。
- 电话:0797-4282799
- 邮箱:sales@tonevee.com
- 联系人:李先生 13510435585
- QQ:
- 地址:江西省赣州市定南县良富工业区电子产业区5栋

