Android.mk中的变量的使用介绍(二)
2014-01-15 16:53
1096 查看
废话不多说,直接分享,欢迎斧正。
Android.mk中的变量(二)1.LOCAL_PATH这个变量用于给出当前文件的路径。你必须在Android.mk的开头定义。例如:LOCAL_PATH := $(call my-dir)2.LOCAL_MODULE这是你模块的名字,它必须是唯一的,而且不能包含空格。你必须在包含任一的$(BUILD_XXXX)脚本之前定义它。模块的名字决定了生成文件的名字。3.LOCAL_MODULE_FILENAME默认的情况下,编译生成的文件名为lib$(LOCAL_MODULE).so/a在使用的此变量后,会用此变量的名来覆盖系统默认的生成文件名。例如:LOCAL_MODULE := foo-version-1LOCAL_MODULE_FILENAME := foo生成的文件名为libfoo.so/a4.LOCAL_SRC_FILES要直接传递给编译器的源代码文件列表。只要列出要传递给编译器的文件即可,因为编译系统自动为你计算依赖5.LOCAL_CPP_EXTENSION这是一个可选变量,用来指定C++代码文件的扩展名,默认是'.cpp',但是你可以改变它,例如:LOCAL_CPP_EXTENSION := .cxx6.LOCAL_CPP_FEATURES这是一个可选的变量,指示你的代码依赖于特定的C + +的功能。例如: LOCAL_CPP_FEATURES := rtti表明你的代码使用RTTI(运行时类型信息)。LOCAL_CPP_FEATURES := exceptions表明你的代码使用C++异常。重要的是你可以同时使用它们: LOCAL_CPP_FEATURES := rtti features7.LOCAL_C_INCLUDES一个可选的路径,相对于DNK更路径,将会在编译时附加一个文件的搜索路径(C或C++文件)例如:LOCAL_C_INCLUDES := sources/fooLOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo8.LOCAL_CFLAGS可选的编译器选项,在编译C和C++代码文件的时候使用。它可以指定额外的宏定义的或有用的编译选项。重要信息:不要在 Android.mk中改变optimization/debugging级别,只要在Application.mk中指定合适的信息,就会自动地为你处理这个问题,在调试期间,会让NDK自动生成有用的数据文件。 9.LOCAL_CPPFLAGS可选编译器标志,只对C++源文件有效,在编译器的命令行中,将会在LOCAL_CFLAGS之后执行。10.LOCAL_CXXFLAGSLOCAL_CPPFLAGS的别名,它是过时的,在未来发布的NDK中可能消失。11.LOCAL_STATIC_LIBRARIES应该链接到这个模块的静态库列表(使用BUILD_STATIC_LIBRARY生成的),这仅仅对共享库模块才有意义12.LOCAL_SHARED_LIBRARIES这个模块在运行时要依赖的共享库模块列表,在链接时需要,在生成文件时嵌入的相应的信息。 注意:这不会附加列出的模块到编译图,也就是,你仍然需要在Application.mk中把它们添加到程序要求的模块中。13.LOCAL_WHOLE_STATIC_LIBRARIESLOCAL_STATIC_LIBRARIES的变体,不同点在于,LOCAL_STATIC_LIBRARIES只会导入循环依赖所用到的库,而LOCAL_WHOLE_STATIC_LIBRARIEX会将所有的库都导入进去。 14.LOCAL_LDLIBS编译你的模块要使用的附加的链接器选项。这对于使用”-l”前缀传递指定库的名字是有用的。例如,下面将告诉链接器生成的模块要在加载时刻链接 /system/lib/libz.so LOCAL_LDLIBS := -lz15.LOCAL_ALLOW_UNDEFINED_SYMBOLS默认情况下,在试图编译一个共享库时,任何未定义的引用将导致一个“未定义的符号”错误。这对于在你的源代码文件中捕捉错误会有很大的帮助。然而,如果你因为某些原因,需要不启动这项检查,把这个变量 设为‘true’。注意相应的共享库可能在运行时加载失败16.LOCAL_ARM_MODE默认情况下,ARM目标的二进制文件将在“thumb”模式的产生,此模式下每个指令都是16位的,如果你想要生成的目标为32位指令模式,你可以定义这个变量为“arm”例如: LOCAL_ARM_MODE := arm17.LOCAL_ARM_NEON定义这个变量为true,在你的C或C++源代码中允许使用ARM高级SIMD的GCC内联函数。18.LOCAL_DISABLE_NO_EXECUTEAndroid NDK r4 添加的“NX bit”安全功能,它默认是开启的,但你设置为true时可以禁用它。19.LOCAL_DISABLE_RELRO默认情况下,NDK编译后的代码为只读并且移植到只读的内存中,同时存在一些安全漏洞(如硬覆盖)。如果你设为“true”时可以禁用它。20.LOCAL_EXPORT_CFLAGS定义这个变量可以标记一组C/C++编译器,在其他模块中可以通过LOCAL_STATIC/SHARED_LIBRARIES来添加到其他的模块的LOCAL_CFLAGS中,例如: include $(CLEAR_VARS) LOCAL_MODULE := foo LOCAL_SRC_FILES := foo/foo.c LOCAL_EXPORT_CFLAGS := -DFOO=1 include $(BUILD_STATIC_LIBRARY)和include $(CLEAR_VARS) LOCAL_MODULE := bar LOCAL_SRC_FILES := bar.c LOCAL_CFLAGS := -DBAR=2 LOCAL_STATIC_LIBRARIES := foo include $(BUILD_SHARED_LIBRARY)在编译bar.c时,-DFOO=1和-DBAR=2将会传递给编译器。21.LOCAL_EXPORT_CPPFLAGS与LOCAL_EXPORT_CFLAGS变量功能一样,但只对C++有效22.LOCAL_EXPORT_C_INCLUDES与LOCAL_EXPORT_CFLAGS变量功能一样,但只对C有效23.LOCAL_EXPORT_LDLIBS与LOCAL_EXPORT_CFLAGS变量功能一样,但只对库的连接有效24.LOCAL_SHORT_COMMANDS当你的模块需要很大的资源文件或动/静态库时,设置这个变量问“true”,编译系统会使用中间件文件,能够使用库的动/静态链接语法。25.LOCAL_FILTER_ASM定义这个变量能够使用shell命令用来过滤LOCAL_SRC_FILES中的编译文件或生成文件。
本文出自 “努力学习成就梦想” 博客,请务必保留此出处http://zhaoyanming.blog.51cto.com/7609220/1351991
Android.mk中的变量(二)1.LOCAL_PATH这个变量用于给出当前文件的路径。你必须在Android.mk的开头定义。例如:LOCAL_PATH := $(call my-dir)2.LOCAL_MODULE这是你模块的名字,它必须是唯一的,而且不能包含空格。你必须在包含任一的$(BUILD_XXXX)脚本之前定义它。模块的名字决定了生成文件的名字。3.LOCAL_MODULE_FILENAME默认的情况下,编译生成的文件名为lib$(LOCAL_MODULE).so/a在使用的此变量后,会用此变量的名来覆盖系统默认的生成文件名。例如:LOCAL_MODULE := foo-version-1LOCAL_MODULE_FILENAME := foo生成的文件名为libfoo.so/a4.LOCAL_SRC_FILES要直接传递给编译器的源代码文件列表。只要列出要传递给编译器的文件即可,因为编译系统自动为你计算依赖5.LOCAL_CPP_EXTENSION这是一个可选变量,用来指定C++代码文件的扩展名,默认是'.cpp',但是你可以改变它,例如:LOCAL_CPP_EXTENSION := .cxx6.LOCAL_CPP_FEATURES这是一个可选的变量,指示你的代码依赖于特定的C + +的功能。例如: LOCAL_CPP_FEATURES := rtti表明你的代码使用RTTI(运行时类型信息)。LOCAL_CPP_FEATURES := exceptions表明你的代码使用C++异常。重要的是你可以同时使用它们: LOCAL_CPP_FEATURES := rtti features7.LOCAL_C_INCLUDES一个可选的路径,相对于DNK更路径,将会在编译时附加一个文件的搜索路径(C或C++文件)例如:LOCAL_C_INCLUDES := sources/fooLOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo8.LOCAL_CFLAGS可选的编译器选项,在编译C和C++代码文件的时候使用。它可以指定额外的宏定义的或有用的编译选项。重要信息:不要在 Android.mk中改变optimization/debugging级别,只要在Application.mk中指定合适的信息,就会自动地为你处理这个问题,在调试期间,会让NDK自动生成有用的数据文件。 9.LOCAL_CPPFLAGS可选编译器标志,只对C++源文件有效,在编译器的命令行中,将会在LOCAL_CFLAGS之后执行。10.LOCAL_CXXFLAGSLOCAL_CPPFLAGS的别名,它是过时的,在未来发布的NDK中可能消失。11.LOCAL_STATIC_LIBRARIES应该链接到这个模块的静态库列表(使用BUILD_STATIC_LIBRARY生成的),这仅仅对共享库模块才有意义12.LOCAL_SHARED_LIBRARIES这个模块在运行时要依赖的共享库模块列表,在链接时需要,在生成文件时嵌入的相应的信息。 注意:这不会附加列出的模块到编译图,也就是,你仍然需要在Application.mk中把它们添加到程序要求的模块中。13.LOCAL_WHOLE_STATIC_LIBRARIESLOCAL_STATIC_LIBRARIES的变体,不同点在于,LOCAL_STATIC_LIBRARIES只会导入循环依赖所用到的库,而LOCAL_WHOLE_STATIC_LIBRARIEX会将所有的库都导入进去。 14.LOCAL_LDLIBS编译你的模块要使用的附加的链接器选项。这对于使用”-l”前缀传递指定库的名字是有用的。例如,下面将告诉链接器生成的模块要在加载时刻链接 /system/lib/libz.so LOCAL_LDLIBS := -lz15.LOCAL_ALLOW_UNDEFINED_SYMBOLS默认情况下,在试图编译一个共享库时,任何未定义的引用将导致一个“未定义的符号”错误。这对于在你的源代码文件中捕捉错误会有很大的帮助。然而,如果你因为某些原因,需要不启动这项检查,把这个变量 设为‘true’。注意相应的共享库可能在运行时加载失败16.LOCAL_ARM_MODE默认情况下,ARM目标的二进制文件将在“thumb”模式的产生,此模式下每个指令都是16位的,如果你想要生成的目标为32位指令模式,你可以定义这个变量为“arm”例如: LOCAL_ARM_MODE := arm17.LOCAL_ARM_NEON定义这个变量为true,在你的C或C++源代码中允许使用ARM高级SIMD的GCC内联函数。18.LOCAL_DISABLE_NO_EXECUTEAndroid NDK r4 添加的“NX bit”安全功能,它默认是开启的,但你设置为true时可以禁用它。19.LOCAL_DISABLE_RELRO默认情况下,NDK编译后的代码为只读并且移植到只读的内存中,同时存在一些安全漏洞(如硬覆盖)。如果你设为“true”时可以禁用它。20.LOCAL_EXPORT_CFLAGS定义这个变量可以标记一组C/C++编译器,在其他模块中可以通过LOCAL_STATIC/SHARED_LIBRARIES来添加到其他的模块的LOCAL_CFLAGS中,例如: include $(CLEAR_VARS) LOCAL_MODULE := foo LOCAL_SRC_FILES := foo/foo.c LOCAL_EXPORT_CFLAGS := -DFOO=1 include $(BUILD_STATIC_LIBRARY)和include $(CLEAR_VARS) LOCAL_MODULE := bar LOCAL_SRC_FILES := bar.c LOCAL_CFLAGS := -DBAR=2 LOCAL_STATIC_LIBRARIES := foo include $(BUILD_SHARED_LIBRARY)在编译bar.c时,-DFOO=1和-DBAR=2将会传递给编译器。21.LOCAL_EXPORT_CPPFLAGS与LOCAL_EXPORT_CFLAGS变量功能一样,但只对C++有效22.LOCAL_EXPORT_C_INCLUDES与LOCAL_EXPORT_CFLAGS变量功能一样,但只对C有效23.LOCAL_EXPORT_LDLIBS与LOCAL_EXPORT_CFLAGS变量功能一样,但只对库的连接有效24.LOCAL_SHORT_COMMANDS当你的模块需要很大的资源文件或动/静态库时,设置这个变量问“true”,编译系统会使用中间件文件,能够使用库的动/静态链接语法。25.LOCAL_FILTER_ASM定义这个变量能够使用shell命令用来过滤LOCAL_SRC_FILES中的编译文件或生成文件。
本文出自 “努力学习成就梦想” 博客,请务必保留此出处http://zhaoyanming.blog.51cto.com/7609220/1351991
相关文章推荐
- 开源小游戏-基于android sample snake
- android测试工具
- Android 动画animation 深入分析
- 在电脑中如何截取android系统中的当前界面
- Android查看应用的最大可用内存及其使用情况
- Android查看应用的最大可用内存及其使用情况
- Android 获取手机通讯录信息 — 姓名和号码
- android删除指定手机号的短信
- Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询
- android.os.NetworkOnMainThreadException
- Android JNI开发生成.h头文件问题
- Android System.loadLibrary及JNI_OnLoad简介
- android +arcgisserver 属性查询
- android中捕捉menu按键的点击事件
- Android中Activity启动模式详解
- Android ADT插件安装及如何创建安卓项目
- Android特效 五种Toast详解
- android中查看Activity的栈的的内容
- Android MediaPlayer的生命周期
- android开发以及HelloWorld