博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android.mk
阅读量:5897 次
发布时间:2019-06-19

本文共 1934 字,大约阅读时间需要 6 分钟。

Android增加本地程序和库跟其所在路径无关,只跟Android.mk文件有关。

Android.mk中的选项参考以下文件路径:
build/core/config.mk
各个选项的默认值在以下文件中定义:
build/core/base_rules.mk
在android.mk中可以生成多个可执行的程序,动态库或者静态库。
1.编译程序
在android.mk中编译一个可执行程序的模板如下:
=================================================
#Test Exe
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \                   //此处加入源代码
        main.c
LOCAL_MODULE:=test_exe                //表示模块最终的名称
#LOCAL_C_INCLUDES :=                  //此处加入头文件路径
#LOCAL_STATIC_LIBRARIES :=            //此处加入所需要连接的静态库(*.a)的名称
#LOCAL_SHARED_LIBRARIES :=             //此处加入所需要连接的动态库(*.so)的名称
include $(BUILD_EXECUTABLE)           //表示以一个可执行程序的方式进行编译
=================================================
编译目标机的可执行文件,静态库,动态库使用的宏:
include $(BUILD_EXECUTABLE)                 //表示编译可执行文件
include $(BUILD_STATIC_LIBRARY)            //表示编译静态库
include $(BUILD_SHARED_LIBRARY)           //表示编译动态库
编译主机的可执行文件,静态库,动态库使用的宏:
include $(BUILD_HOST_EXECUTABLE)            //表示编译主机可执行文件
include $(BUILD_HOST_STATIC_LIBRARY)      //表示编译主机静态库
include $(BUILD_HOST_SHARED_LIBRARY)    //表示编译主机动态库
指定最后目标安装路径的宏:
LOCAL_MODULE_PATH  :=$(TARGET_ROOT_OUT)                   //表示最终模块的目标路径
LOCAL_UNSTRIPPED_PATH   :=$(TARGET_ROOT_OUT_UNSTRIPPED)         //表示没有经过符号剥离的目标路径

  • TARGET_ROOT_OUT        //表示跟文件系统,路径为out/target/product/generic/root;
  • TARGET_OUT                    //表示system文件系统,路径为out/target/product/generic/system;
  • TARGET_OUT_DATA        //表示data文件系统, 路径为out/target/product/generic/data.

     注意:如不指定LOCAL_MODULE_PATH,则默认使用的宏为TARGET_OUT。静态库不存在目标路径的问题。

这里与windows有区别,windows是自动选择路径,静态库(.lib文件)就生成到lib目录下,动态库(.dll文件)就生成到target目录下。而且进入系统也不指定具体在什么地方,而android的系统是由三个部分组成。
        2 .复制文件
复制的文件内容包括:配置脚本,资源文件,预制的程序和库等,有时也会创建目录。
       示例:
       LOCAL_PATH:=  $(call my-dir)
       include $(CLEAR_VARS)
       copy_from := \
       A.txt  \
       B.txt
       copy_to  :=  $(addprefix  $(TARGET_OUT) /txt/, $(copy_from))
       $(copy_to)  : PRIVATE_MODULE := txt
       $(copy_to)  : $(TARGET_OUT) /txt/% : $(LOCAL_PATH) /% | $(ACP)
       $(transform-prebuilt-to-target)
       ALL_PREBUILT = $(copy_to)
      DIRS := $(addprefix $(TARGET_OUT)) /, txt
   
       $(DIRS);
       @echo Directory: $@
       @mkdir -p $@
上述脚本实现如下动作:
(1)在system中创建目录txt
(2)在当前路径下将A.txt和B.txt复制到system/txt目录中

转载地址:http://usxsx.baihongyu.com/

你可能感兴趣的文章
由毫秒(ms)转换为日期和时间的格式(简单易用)
查看>>
一个女生对BootStrap的感情
查看>>
JAVA实现支付宝提现到个人账户
查看>>
VMware VIX API使用教程
查看>>
The Shared folder with you
查看>>
Servlet+JSP+MySQL实现用户管理模块之七、实现用户信息更新和重置密码
查看>>
动态规划本质理解:01背包问题
查看>>
微软官方32位版Windows Server 2008下载
查看>>
简单纪要:java 从txt文本中 读取数据
查看>>
Nginx+FastCGI运行原理
查看>>
笔记——搭建简易NFS服务
查看>>
虚拟磁盘恢复虚拟机
查看>>
zabbix通过自定义脚本监控nginx,php-fpm和mysql占用内存数和进程的个数
查看>>
车载3G /WIFI设备,让汽车搭上移动互联网
查看>>
【leetcode】935. Knight Dialer
查看>>
Scalable Web Architecture and Distributed Systems
查看>>
SSH连接远程终端实用教程
查看>>
Python迁移MySQL数据到MongoDB脚本
查看>>
socket编程之TCP/UDP
查看>>
Flutter | 状态管理指南篇——Provider
查看>>