• Android.mk


    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目录中

  • 相关阅读:
    变换后台数据的表现形式(类型vue中的管道函数)
    R语言决策树和随机森林分类电信公司用户流失churn数据和参数调优、ROC曲线可视化
    R语言几何布朗运动 GBM模拟股票价格优化建立期权定价概率加权收益曲线可视化
    R语言用GARCH模型波动率建模和预测、回测风险价值 (VaR)分析股市收益率时间序列
    python用pystan贝叶斯IRT模型拟合Rasch模型分析学生考试问题数据
    【视频】关联规则模型、Apriori算法及R语言挖掘商店交易数据与交互可视化|数据分享
    RK3288 Android7.1 PMU RK808 调试
    vue.js3:用qrcodeparser解析二维码图片(vue@3.2.36)
    一文详解|增长那些事儿
    为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
  • 原文地址:https://www.cnblogs.com/senior-engineer/p/4848842.html
Copyright © 2020-2023  润新知