asterisk1.8 Makefile分析 (1)

为了观查Makefile的输出,可以对Makefile做如下修改。

1. 将PRINT_DIR和NOISY_BUILD这两个变量置为yes。

2. 修改Makefile.rules,将ECHO_PREFIX和CMD_PREFIX的赋值都去掉。

3. 将以下关键目标的命令前@符号都去掉。

     makeopts.embed_rules

     $(MOD_SUBDIRS_EMBED_LDSCRIPT)

     $(MOD_SUBDIRS_EMBED_LDFLAGS)

     $(MOD_SUBDIRS_EMBED_LIBS)

     $(MOD_SUBDIRS)

     $(OTHER_SUBDIRS)



整个Makefile的第一个目标是  all,也是此Makefile的默认目标并且它是一个伪目标。

all: _all

从这句可以看到,all的依赖是_all,再看_all

_all: .lastclean  makeopts  $(SUBDIRS)  doc/core-en_US.xml

可以看到_all由多个目标组成,这也是Makefile多目标的常用写法。

下面分别分析这些目标:

1. .lastclean不用管,解压asterisk源码包就有这个文件。

2. makeopts也不用管,在执行configure后会自动生成这个文件。这个目标可能是用来检测configure文件的,但      configure有错或者不存在时会停止编译。这句话在makefile里可以看到,如下

makeopts: configure
    @echo "****"
    @echo "**** The configure script must be executed before running '$(MAKE)'."
    @echo "****               Please run \"./configure\"."
    @echo "****"
    @exit 1
3. $(SUBDIRS)

     将$(SUBDIRS)展开如下:

     SUBDIRS:=$(OTHER_SUBDIRS) $(MOD_SUBDIRS)

     MOD_SUBDIRS:=channels pbx apps codecs formats cdr cel bridges funcs tests main res addons
     OTHER_SUBDIRS:=utils agi

     从上面那个名称可以看出,这些都是asterisk的子目录,应该是去分别执行这些字目录下的makefile文件。

    下面我们先看看$(SUBDIRS)的依赖目标

    在makefile里查询这个目标的依赖如下:

    $(SUBDIRS): main/version.c   include/asterisk/version.h   include/asterisk/build.h   include/asterisk/buildopts.h defaults.h makeopts.embed_rules

    可以看到目录$(SUBDIRS)由上面n个目标组成,以下分别分析:

   1)  main/version.c

        查找makefile,这个目标由以下语句生成:

         main/version.c: FORCE .lastclean
                     @build_tools/make_version_c > $@.tmp
                     @cmp -s $@.tmp $@ || mv $@.tmp $@
                     @rm -f $@.tmp

   2)  include/asterisk/version.h

      查找makefile,这个目标由以下语句生成:

        include/asterisk/version.h: FORCE .lastclean
                    @build_tools/make_version_h > $@.tmp
                    @cmp -s $@.tmp $@ || mv $@.tmp $@
                    @rm -f $@.tmp

   3) include/asterisk/build.h

            查找makefile,这个目标由以下语句生成:

       include/asterisk/build.h: .lastclean
                   @build_tools/make_build_h > $@

     4) include/asterisk/buildopts.h

           查找makefile,这个目标由以下语句生成:

      include/asterisk/buildopts.h: menuselect.makeopts .lastclean
                  @build_tools/make_buildopts_h > $@.tmp
                  @cmp -s $@.tmp $@ || mv $@.tmp $@
                  @rm -f $@.tmp

   5) defaults.h

         查找makefile,这个目标由以下语句生成:

       defaults.h: makeopts .lastclean
                  @build_tools/make_defaults_h > $@.tmp
                  @cmp -s $@.tmp $@ || mv $@.tmp $@
                  @rm -f $@.tmp

    6) makeopts.embed_rules

       查找makefile,这个目标由以下语句生成:

      makeopts.embed_rules: menuselect.makeopts
              @echo "Generating embedded module rules ..."
              @rm -f $@
              +@$(SUBMAKE) $(MOD_SUBDIRS_EMBED_LDSCRIPT)
              +@$(SUBMAKE) $(MOD_SUBDIRS_EMBED_LDFLAGS)
              +@$(SUBMAKE) $(MOD_SUBDIRS_EMBED_LIBS)

       可以看出这个目标依赖于menuselect.makeopts

4) doc/core-en_US.xml

     这个目标看makefile里说明,是用于生成文档的,应该没什么用,不管他。


接下来我们主要分析menuselect.makeopts

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python定时发送信息_python实现定时发送消息

#!/usr/bin/env python#-*- coding:utf-8 -*- Author : wujf Time:2018/8/21 15:59# 自动发送消息from threading import Timerfrom wxpy import *import requestsimport urllib2,re,urllib,requests#bot Bot(console_qr2,cache_pathbotoo.pk1) #把consol_qr2去掉,…

Linux绘图函数与驱动,Linux中与驱动相关的ioctl函数

一: ioctl函数的作用ioctl用于向设备发控制和配置命令 ,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据。也就是说,read/write读写的数据是in-band数据,是I/O操作的主体&…

给管道注册事件,用于用户是否登录!

1.一个网站项目的自定义cs文件,如图: 2.CheckRight.cs中的代码如下: public class CheckRight : IHttpModule{ public void Dispose() { } public void Init(HttpApplication app) { app.AcquireRequestState new EventHandler(app_AcquireR…

css 商城 两列_【云控基础】HTML+CSS基础入门

课程大纲:第一部分:课程概述1、什么是HTML、CSS,能做什么?2、HTML、HTML5、H5的区别3、HTMLCSS全览4、HTML、CSS的学习路径和学习方法第二部分:HTMLCSS开发环境搭建1、谷歌浏览器的安装和简单使用2、Sublime Text 编辑…

asterisk1.8 Makefile分析 (2)

menuselect.makeopts分析 查找makefile,这个目录的依赖关系如下: menuselect.makeopts: menuselect/menuselect menuselect-tree makeopts build_tools/menuselect-deps $(GLOBAL_MAKEOPTS) $(USER_MAKEOPTS) 下面我们逐个分析: 1) menu…

linux定时scp脚本,linux expect 实现定时scp的任务

一,什么是expect?expect 是一种脚本语言,在做系统管理时,我们很多时候需要输入密码,例如:连接 ssh,连接ftp,那么如何能做到不输入密码吗?我们需要有一个工具,能代替我们实现与终端的交互&#…

搜索不包含关键词_亚马逊listing关键词优化

亚马逊是一个客户至上的平台,它将客户体验置于一切之上。根据亚马逊的说法,消费者找到产品的速度越快,他们的购物体验就会越好。因此,亚马逊的A9算法被设计用来寻找对客户购物体验有价值的相关listing。如果你想提高你的搜索排名&…

asterisk1.8启动信息分析(未完)

将main/asterisk.c的开启守护进程的那行代码修改一下&#xff0c;即可看到asterisk的启动打印信息。 if (daemon(1, 0) < 0) 改为 if (daemon(1, 1) < 0) 下面分析启动信息 init_manager() Unable to open AMI configuration manager.conf, or configuration is inva…

excel文件损坏修复绝招_高手都在用的PDF转换PPT、WORD、EXCEL工具

点击上方关注我&#xff0c;UUUhooo&#xff0c;你最好了……首先说标题提到转换是在格式间转换&#xff0c;而不是软件间转换&#xff0c;所以标题是为了大多数人认知方便而起的&#xff0c;PDF是一种文档格式&#xff0c;全程叫便携式文档格式&#xff0c;而打开它的软件叫PD…

cowboy源码分析

2013-01-21 by 谢鸿锋   原创文章&#xff0c;转载请注明&#xff1a;转载自Erlang云中漫步 目录 一、概述 二、ranch源码分析 三、cowboy源码分析 1、Request调度规则 2、http协议实现分析 3、http协议之chunked编码 4、http协议之long_polling 5、http协议之websocket 6、…

linux解压tz zip,TZ 文件扩展名: 它是什么以及如何打开它?

TZ 疑难解答常见的 TZ 打开问题Smith Micro StuffIt Deluxe 已删除尝试打开 TZ 文件时&#xff0c;您收到错误 “无法打开 TZ 文件类型”。 发生这种情况时&#xff0c;通常是由于 %%os%% 中缺少 Smith Micro StuffIt Deluxe。 操作系统不知道如何处理你的 TZ 文件&#xff0c;…

python table对象_(RPA学习):Python-docx 常用方法

原标题&#xff1a;(RPA学习)&#xff1a;Python-docx 常用方法**1.**引用库from docx import Document**2.**新建一个空 docxdocument Document()**3.**保存 docxdocument.save(‘c:/test2.docx’)**4.**打开指定的 docxdocument Document(‘c:/test.docx’)**5.**在末尾增加…

ubuntu13.10无法登陆

在启动时到了登录界面后&#xff0c;输入用户名和密码&#xff0c;系统黑一下屏又回到了登录界面&#xff0c;怎么也进不去&#xff1f; 这时&#xff0c;按CtrlAltF1可以进入普通用户shell&#xff0c;CtrlAltF2可以进入root用户shell&#xff0c;AltF7可以回到图形界面。 进…

无法定位程序输入点 except_软件测试中的功能测试点(三)

testkuaibao|软件测试自学公众号26.输入法半角全角检查再输入信息中&#xff0c;输入一个或连串空格&#xff0c;查看系统如何处理&#xff0c;如对于要求输入符点型数据的项中&#xff0c;输入全角的小数点(“。”或“.”&#xff0c;如4.5)&#xff1b;输入全角的空格等。 27…

ASP.NET站点跨子域名单点登陆(SSO)的实现

http://blog.csdn.net/jason_dct/article/details/8502075 ASP.NET站点跨子域名单点登陆&#xff08;SSO&#xff09;的实现 在MSDN的文档“配置跨应用程序的 Forms 身份验证&#xff08;http://msdn2.microsoft.com/zh-CN/library/eb0zx8fc.aspx&#xff09;” 中&#xff0c;…

linux实验三makefile,实验平台上Makefile详细的解释

作者&#xff1a;甘老师,华清远见嵌入式学院讲师。# CORTEX-A8 PERI DRIVER CODE# VERSION 2.0# ATHUOR www.linuxidc.com# MODIFY DATE#2013.03.28 Makefile/***(下面的解释将用这个的形式进行标注)写好的源文件,要编译成二进制文件.需要指定工具链的,这里指定我们的工具链是…

python esp8266模块_ESP8266使用笔记之常用固件

开发板使用的是NodeMCU开发板&#xff1a;目录1.学习使用ESP8266官方的SDK1.1使用SDK提供的AT固件1.2使用SDK Build固件2.学习使用NodeMCU固件(上层可使用Lua开发)和MicroPython固件(上层可使用MicroPython开发)学习使用ESP8266官方的SDK使用AT固件&#xff1a;下载开发包&…

基础C#总结

由于在学习c#这段视频是为了辅助设计模式的学习,这部分的内容也和VB的内容很大程度上是一样的.虽然在开始的 时候,有些困难.在接触了一些例子和实验后.理解起来变得顺畅了很多.下面是对c#基础内容的总结.很多内容都在VB中有 过接触,所以都是些基础知识.捋一捋,将这些时间脑子的…

e站app改内置hosts_米家踢脚线电暖器E评测:符合现代家居审美 全屋取暖“小钢炮”...

【科技犬】对于没有集中供暖的长江中下游地区居民而言&#xff0c;电暖器是不折不扣的"保命神器"。而在深秋的北方&#xff0c;昼夜温差较大&#xff0c;这种时候使用灵活、易于搬运的电暖器也成为更加明智的选择。在北方每年的冬季&#xff0c;室内温度就直接关系着…

asterisk libxml2

asterisk 在configure的时候&#xff0c;会去/usr/bin下检查有没有xml2-config这个可执行文件&#xff0c;还回去检查 编译的工具链中有没有libxml2.so这个库文件&#xff0c;即使是交叉编译&#xff0c;/usr/bin下应该也是上位机的xml2-config 而且xml2-config和libxml2.so的…