2.4.1 Android.mk(4)
8. 其他构建系统变量
除了在前几节提到的变量之外,Android NDK构建系统还支持其他变量,本节将对这些变量进行简要说明。
构建系统定义的变量有:
TARGET_ARCH:目标CPU体系结构的名称,例如arm
TARGET_PLATFORM:目标Android平台的名称,例如:android-3
TARGET_ARCH_ABI:目标CPU体系结构和ABI的名称,例如:armeabi-v7a
TARGET_ABI:目标平台和ABI的串联,例如:android-3-armeabi-v7a
可被定义为模块说明部分的变量有:
LOCAL_MODULE_FILENAME:可选变量,用来重新定义生成的输出文件名称。默认情况下,构建系统使用LOCAL_MODULE的值作为生成的输出文件名称,但变量LOCAL_MODULE_ FILENAME可以覆盖LOCAL_MODULE的值。
LOCAL_CPP_EXTENSION:C++源文件的默认扩展名是.cpp。这个变量可以用来为C++源代码指定一个或多个文件扩展名。
- …
- LOCAL_CPP_ EXTENSION :=.cpp .cxx
- …
LOCAL_CPP_FEATURES:可选变量,用来指明模块所依赖的具体C++特性,如RTTI、exceptions等。
- …
- LOCAL_CPP_FEATURES :=rtti
- …
LOCAL_C_INCLUDES:可选目录列表,NDK安装目录的相对路径,用来搜索头文件。
- …
- LOCAL_C_INCLUDES :=sources/shared-module
- LOCAL_C_INCLUDES :=$(LOCAL_PATH)/include
- …
LOCAL_CFLAGS:一组可选的编译器标志,在编译C和C++源文件的时候会被传送给编译器。
- …
- LOCAL_CFLAGS :=-DNDEBUG -DPORT=1234
- …
LOCAL_CPP_FLAGS:一组可选的编译标志,在只编译C++源文件时被传送给编译器。
LOCAL_WHOLE_STATIC_LIBRARIES:LOCAL_STATIC_LIBRARIES的变体,用来指明应该被包含在生成的共享库中的所有静态库内容。
小贴士:
当几个静态库之间有循环依赖时,LOCAL_WHOLE_STATIC_LIBRARIES很有用。
LOCAL_LDLIBS:链接标志的可选列表,当对目标文件进行链接以生成输出文件时该标志将被传送给链接器。它主要用于传送要进行动态链接的系统库列表。例如:要与Android NDK日志库链接,使用以下代码:
- LOCAL_LDFLAGS := llog
LOCAL_ALLOW_UNDEFINED_SYMBOLS:可选参数,它禁止在生成的文件中进行缺失符号检查。若没有定义,链接器会在符号缺失时生成错误信息。
LOCAL_ARM_MODE:可选参数,ARM机器体系结构特有变量,用于指定要生成的ARM二进制类型。默认情况下,构建系统在拇指模式下用16位指令生成,但该变量可以被设置为arm来指定使用32位指令。
- LOCAL_ARM_MODE :=arm
该变量改变了整个模块的构建系统行为;可以用.arm扩展名指定只在arm模式下构建特定文件。
- LOCAL_SRC_FILES :=file1.c file2.c.arm
LOCAL_ARM_NEON:可选参数,ARM机器体系结构特有变量,用来指定在源文件中应该使用的ARM高级单指令流多数据流(Single Instruction Multiple Data,SIMD)(a.k.a. NEON)内联函数。
- LOCAL_ARM_NEON :=true
该变量改变了整个模块的构建系统行为;可以用.neon扩展名指定只构建带有NEON内联函数的特定文件。
- LOCAL_SRC_FILES :=file1.c file2.c.neon
LOCAL_DISABLE_NO_EXECUTE:可选变量,用来禁用NX Bit安全特性。NX Bit代表Never Execute(永不执行),它是在CPU中使用的一项技术,用来隔离代码区和存储区。这样可以防止恶意软件通过将它的代码插入应用程序的存储区来控制应用程序。
- LOCAL_DISABLE_NO_EXECUTE :=true
喜欢的朋友可以添加我们的微信账号:
51CTO读书频道二维码

51CTO读书频道活动讨论群:342347198