您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: