android.mk & application.mk可能用到的参数详解

APP_:

APP_ALLOW_MISSING_DEPS=true to allow missing dependencies
       编译ndk 的时候,ndk本地的版本比要编译的库的ndk版本高,提示有些依赖不在,除了提升版本以外,还可以这么解决:
在android.mk 或者application.mk上加上APP_ALLOW_MISSING_DEPS :=true  

APP_STL:android-app中使用的stl库,C++运行库

APP_CPPFLAGS:C++代码的编译选项

APP_ABI:Application Binary Interface(APP_ABI := armeabi armeabi-v7a x86)

APP_OPTIM
这个变量是可选的,用来定义“release”或"debug"。在编译您的应用程序模块的时候,可以用来改变优先级。

LOCAL_:

LOCAL_PATH:必须位于Android.mk文件的最开始。它是用来定位源文件的位置,$(call my-dir)的作用就是返回当前目录的路径

LOCAL_MODULE:以标识你在 Android.mk 文件中描述的每个模块,so库的生成

LOCAL_SRC_FILES:包含将要编译打包进模块中的 C 或 C++源代码文件

LOCAL_CPPFLAGS:仅定义额外的C++编译器的参数,适用于C++/C

LOCAL_CFLAGS:编译C文件用到的编译器参数

LOCAL_LDFLAGS:这个编译变量传递给链接器一个一些额外的参数,比如想传递而外的库和库路径给ld,如果是非系统的第三方库,貌似只能用LOCAL_LDFLAGS方式。

LOCAL_C_INCLUDES:头文件搜索路径,默认在LOCAL_PATH目录

LOCAL_CPP_EXTENSION:用来指定c++的扩展名,LOCAL_CPP_EXTENSION :=.cXX

LOCAL_STATIC_LIBRARIES:表示模块需要使用哪些静态库,以便在编译时候链接

LOCAL_SHARED_LIBRARIES:表示模块需要使用哪些动态库,以便在编译时候链接,如果链接库调用其他动态库,需要重新链接或者添加到Application.mk中。

LOCAL_LDLIBS:编译模块时附加的链接器选项,即额外链接的库

LOCAL_MODULE_PATH:指定的目标安装路径

LOCAL_ARM_MODE:

GNU make 系统变量

CLEAR_VARS 由编译系统提供,所有的编译文件都在同一个 GNU MAKE 执行环境中,所有的变量都是全局的。所以我们需要先清空这些变量(LOCAL_PATH除外),在开始一个新模块之前包含这个脚本。

BUILD_SHARED_LIBRARY:编译系统提供的变量,根据LOCAL_***中的值编译生成动态库

BUILD_STATIC_LIBRARY:编译系统提供的变量,根据LOCAL_***中的值编译生成动态库

TARGET_ARCH:目标cpu名称,x86,arm

TARGET_ARCH_ABI:

TARGET_ABI:

TARGET_PLATFORM:目标android平台的名字

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在编译OpenPose源代码时,在源代码的根目录下应该会有一个名为`Android`的目录,这个目录中就包含了`Android.mk`和`Application.mk`两个文件,用于在Android NDK环境下编译OpenPose库。 这是`Android.mk`文件的一个示例: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := openpose LOCAL_SRC_FILES := src/main.cpp \ src/openpose.cpp \ src/pose.cpp \ src/net.cpp \ src/utils.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/include \ $(LOCAL_PATH)/3rdparty/include LOCAL_LDLIBS := -lm -llog -ljnigraphics -ldl -lz LOCAL_STATIC_LIBRARIES := cpufeatures include $(BUILD_SHARED_LIBRARY) $(call import-module,android/cpufeatures) ``` 在这个文件中,`LOCAL_PATH`是当前目录的路径,`LOCAL_MODULE`是编译后生成的库文件名,`LOCAL_SRC_FILES`是编译需要的源文件列表,`LOCAL_C_INCLUDES`是头文件所在目录,`LOCAL_LDLIBS`是需要链接的库文件列表,`LOCAL_STATIC_LIBRARIES`是需要静态链接的库文件列表。 这是`Application.mk`文件的一个示例: ``` APP_ABI := armeabi-v7a APP_PLATFORM := android-19 APP_STL := gnustl_static APP_BUILD_SCRIPT := Android.mk APP_OPTIM := release ``` 在这个文件中,`APP_ABI`是指定编译生成的so库的架构,`APP_PLATFORM`是指定编译生成的so库的最低支持的安卓API版本,`APP_STL`是指定编译使用的STL库,`APP_BUILD_SCRIPT`是指定编译脚本文件名,`APP_OPTIM`是指定编译优化级别。 需要根据你的具体需求,对这些文件进行相应的调整和修改,以满足你的编译需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值