• 关于jni编译32位、64位动态库(Android.mk和Application.mk文件)


    最近新项目需要编译64位的动态库,这里记录如何配置。

    在jni目录下加入Android.mk和Application.mk文件。

    Application.mk

    1 APP_ABI := armeabi armeabi-v7a arm64-v8a

    Android.mk

    1 LOCAL_PATH := $(call my-dir)
    2 include $(CLEAR_VARS)
    3 
    4 LOCAL_MODULE := hello-jni
    5 LOCAL_SRC_FILES := hello-jni.c
    6 
    7 include $(BUILD_SHARED_LIBRARY)

    加上这两个mk文件后,编译就会生成armeabi、armeabi-v7a、arm64-v8a的库文件。

    补充:

    Android.mk文件是用来向build system(编译系统)描述你的源文件的,比如你要编一个静态库(.a文件)  或 一个动态库(.so文件),将由build system解析一次或者多次。

    Application.mk目的是GNU Makefile的一部分,描述你的应用所依赖的编译系统中的模块(静态库或动态库)。

     

    在Android.mk文件中判断64位还是32位

     1 ifneq ($(filter $(NDK_KNOWN_DEVICE_ABI64S),$(TARGET_ARCH_ABI)),)
     2 # 64-bit ABIs
     3 
     4 ……
     5 ……
     6 
     7 else
     8 # 32-bit ABIs
     9 
    10 ……
    11 ……
    12 ……
    13 
    14 
    15 endif

    编译目标类型

    每个Android.mk文件后面都会指明要编译什么类型的输出,比如下面:

     

    编译动态库 : include $(BUILD_SHARED_LIBRARY)    

    编译静态库 : include $(BUILD_STATIC_LIBRARY)

    输出已编译好的so文件 : include $(PREBUILT_SHARED_LIBRARY)

    编译jar文件 : include $(BUILD_JAVA_LIBRARY)

    输出已编译好的apk文件 : include $(BUILD_PREBUILT)

    编译apk文件 : include $(BUILD_PACKAGE)

     

     

     

  • 相关阅读:
    start-stop-daemon 守护进程管理
    Proxmox VE 的安装和简单使用
    查询Linux下文件格式.
    re匹配 [sS][wW]的使用.
    prometheus简单监控Linux,mysql,nginx
    Linux中查看和修改分区的uuid方便挂载使用
    openssl 模块 安装 centso Ubuntu
    python写爬虫遇到需要解码js一些记录
    CSS 文字超出部分显示省略号
    新随笔
  • 原文地址:https://www.cnblogs.com/l2rf/p/6149457.html
Copyright © 2020-2023  润新知