学习记录 2020/8/5

研一


ABI

在使用ndk编译的时候总是需要在Application.mk文件中对APP_ABI进行选择,今天对ABI进行了初步了解。
ABI是application-binary-interface的缩写,是操作系统和应用程序,应用程序和他下面的库交流的接口。在编译阶段,链接器需要对不同的目标ABI进行不同的处理,如进行数据首地址对齐,静态变量地址表的生成,内存地址的使用等方面。ABI包含的意义一方面可以是目标机器的系统规定,另一方面也可以理解为生成的打包程序的版本信息。
在编译选项中,使用APP_ABI := armabi编译32位的安卓库,使用APP_ABI := x86 armabi_v7a编译32位的安卓库,APP_ABI := arm64-v8a编译64位的安卓库。

Android.mk和Application.mk学习

以上两个文件都是ndk编译时的make文件,不同于gcc编译make文件的地方是仅仅需要编写参数变量的值,很多依赖关系,编译语句都被ndk所封装好了,并不需要再编写,省了很多的事,因此ndk编译的学习只需要对变量类型进行细致的了解。

LOCAL_PATH := $(call my-dir)
#module1
include $(CLEAR_VARS)
LOCAL_MODULE := module1
LOCAL_SRC_FILES := module1.c
include $(BUILD_SHARED_LIBRARY)

LOCAL_PATH := $(call my-dir)
#module2
include $(CLEAR_VARS)
LOCAL_MODULE := module2
LOCAL_SRC_FILES := module2.c
LOCAL_SHARED_LIBRARIES := module1
include $(BUILD_SHARED_LIBRARY)

$(call import-module, code/libjson, code/libparse)
LOCAL_PATH := $(call my-dir)

#module prebuilt
include $(CLEAR_VARS)
LOCAL_MODULE := pre_builtmodule
LOCAL_SRC_FILES := module1.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/foo.h
include $(PREBUILT_SHARED_LIBRARY)

#module2
include $(CLEAR_VARS)
LOCAL_MODULE := shared_module2
LOCAL_SRC_FILES := pre_builtmodule
include $(BUILD_SHARED_LIBRARY)

SET -e SED ‘s/str1/str2/g’

待学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值