17.Linux shell编程(通过Makefile看Android.mk文件)

简介: (创建于2018/2/11 上午8:12:32)Makefile文件 //递归展开式,可以引用还没有定义的变量,展开是引用时展开 1 str1=$(str2) ...

(创建于2018/2/11 上午8:12:32)

Makefile文件

  //递归展开式,可以引用还没有定义的变量,展开是引用时展开
  1 str1=$(str2)                                                                             
  2 str2=hello
  //直接展开式,必须引用定义好了的变量,定义之后就会展开
  4 str3:=android
  5 str4:=$(str3)
  6 str5:=$(str1) world
  //变量的追加
  8 str5 +=,nice to meet you
  //自定义函数
 10 myfun=$2 $1
 //将自定义函数返回值赋给一个变量
 11 param=$(call myfun,20,10)
 12 
 13 test:
 14         @echo $(str1)
 15         @echo $(str4)
 16         @echo $(str5)
 17         @echo $(param)
            //调用自定义函数,call是调用函数的关键字
 18         @echo $(call myfun,40,30)

Android.mk

//调用my-dir函数,返回Android.mk文件所在的目录,my-dir是内置函数,将目录赋值给变量LOCAL_PATH,
//放在第一行,地址当前所在目录
LOCAL_PATH := $(call my-dir)

#ffmpeg lib
//include $(CLEAR_VARS) 编译模块时,清空LOCAL_MODULE等参数,每个模块单独编译
//每次编译一个模块时,要清空上一个模块的变量信息,重新设置
include $(CLEAR_VARS)
//模块名称,编译生成后的模块名
LOCAL_MODULE := avcodec
//编译需要的源文件
LOCAL_SRC_FILES := libavcodec-56.so
////include file Makefile可以引入其他的Makefile文件
include $(PREBUILT_SHARED_LIBRARY)

#myapp
include $(CLEAR_VARS)
LOCAL_MODULE := myffmpeg
LOCAL_SRC_FILES := dn_ffmpeg_player.c
##-landroid参数 for native windows
LOCAL_LDLIBS := -llog -landroid -ljnigraphics
//需要的头文件
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/ffmpeg
LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/libyuv
//编译需要的动态库
LOCAL_SHARED_LIBRARIES := avcodec avdevice avfilter avformat avutil postproc swresample swscale libyuv
include $(BUILD_SHARED_LIBRARY)
相关文章
|
9天前
|
Java Android开发 C++
Android Studio JNI 使用模板:c/cpp源文件的集成编译,快速上手
本文提供了一个Android Studio中JNI使用的模板,包括创建C/C++源文件、编辑CMakeLists.txt、编写JNI接口代码、配置build.gradle以及编译生成.so库的详细步骤,以帮助开发者快速上手Android平台的JNI开发和编译过程。
55 1
|
3天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
18 12
|
2天前
|
Shell Linux
Shell 编程 编写hello word
Shell 编写hello word
22 5
|
2天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
7天前
|
项目管理 敏捷开发 开发框架
敏捷与瀑布的对决:解析Xamarin项目管理中如何运用敏捷方法提升开发效率并应对市场变化
【8月更文挑战第31天】在数字化时代,项目管理对软件开发至关重要,尤其是在跨平台框架 Xamarin 中。本文《Xamarin 项目管理:敏捷方法的应用》通过对比传统瀑布方法与敏捷方法,揭示敏捷在 Xamarin 项目中的优势。瀑布方法按线性顺序推进,适用于需求固定的小型项目;而敏捷方法如 Scrum 则强调迭代和增量开发,更适合需求多变、竞争激烈的环境。通过详细分析两种方法在 Xamarin 项目中的实际应用,本文展示了敏捷方法如何提高灵活性、适应性和开发效率,使其成为 Xamarin 项目成功的利器。
23 1
|
7天前
|
安全 Linux 开发工具
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
|
10天前
|
开发工具 git 索引
repo sync 更新源码 android-12.0.0_r34, fatal: 不能重置索引文件至版本 ‘v2.27^0‘。
本文描述了在更新AOSP 12源码时遇到的repo同步错误,并提供了通过手动git pull更新repo工具来解决这一问题的方法。
31 1
|
7天前
|
网络协议 Linux Shell
探索Linux操作系统:从基础到高级编程
【8月更文挑战第31天】本文旨在为读者提供一条清晰的路径,从Linux操作系统的基础知识出发,逐步深入到高级编程技巧。我们将一起揭开Linux神秘的面纱,了解其内部工作原理,并通过实际代码示例加深理解。无论你是初学者还是有一定经验的开发者,这篇文章都将为你带来新的视角和技能提升。
|
7天前
|
Linux
探索Linux操作系统:命令行与脚本编程基础
【8月更文挑战第31天】在这篇文章中,我们将一起踏上一段旅程,深入探索Linux操作系统的奥秘。通过学习命令行的使用和编写简单的脚本,你将能够更高效地与你的计算机进行交流。无论你是新手还是有经验的用户,本文都将为你打开一扇通往Linux世界的大门。准备好了吗?让我们开始吧!
|
8天前
|
存储 监控 数据库
Android经典实战之OkDownload的文件分段下载及合成原理
本文介绍了 OkDownload,一个高效的 Android 下载引擎,支持多线程下载、断点续传等功能。文章详细描述了文件分段下载及合成原理,包括任务创建、断点续传、并行下载等步骤,并展示了如何通过多种机制保证下载的稳定性和完整性。
16 0
下一篇
DDNS