news 2026/1/12 14:34:24

FreeSWITCH带依赖模块的makefile.am

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FreeSWITCH带依赖模块的makefile.am

概述

FreeSWITCH默认的G729模块是不带编解码功能的,只能转发媒体流。

需要G729模块增加一个源代码依赖包,来实现编解码功能。

首先需要修改makefile.am文件,实现代码的自动依赖编译。

环境

CentOS 7.9

FreeSWITCH 1.10.12

源代码结构

mod_g729模块源代码结构如下。

mod_g729

├── codec_g729.c

├── g729api.h

├── g729a_v11

│ ├── acelp_ca.c

│ ├── basic_op.c

│ ├── basic_op.h

│ ├── cod_ld8a.c

│ ├── cor_func.c

│ ├── de_acelp.c

│ ├── dec_gain.c

│ ├── dec_gain.h

│ ├── dec_lag3.c

│ ├── dec_ld8a.c

│ ├── dspfunc.c

│ ├── filter.c

│ ├── gainpred.c

│ ├── ld8a.h

│ ├── lpc.c

│ ├── lpcfunc.c

│ ├── lpcfunc.h

│ ├── lspdec.c

│ ├── lspdec.h

│ ├── lspgetq.c

│ ├── lspgetq.h

│ ├── Makefile

│ ├── oper_32b.c

│ ├── oper_32b.h

│ ├── pitch_a.c

│ ├── postfilt.c

│ ├── post_pro.c

│ ├── p_parity.c

│ ├── pred_lt3.c

│ ├── pre_proc.c

│ ├── pre_proc.h

│ ├── qua_gain.c

│ ├── qua_gain.h

│ ├── qua_lsp.c

│ ├── qua_lsp.h

│ ├── tab_ld8a.c

│ ├── tab_ld8a.h

│ ├── taming.c

│ ├── taming.h

│ ├── typedef.h

│ ├── util.c

│ └── util.h

├── g729.h

├── g729_slin_ex.h

├── libg729.c

├── Makefile.am

├── mod_g729.c

├── README.txt

└── slin_g729_ex.h

原makefile

fs默认makefile.am如下,不会自动编译子目录。

include $(top_srcdir)/build/modmake.rulesam

MODNAME=mod_g729

G729_DIR=$(switch_srcdir)/libs/libg729

G729_BUILDDIR=$(switch_builddir)/libs/libg729

G729_A=$(G729_BUILDDIR)/.libs/libg729.a

mod_LTLIBRARIES = mod_g729.la

mod_g729_la_SOURCES = mod_g729.c

mod_g729_la_CFLAGS = $(AM_CFLAGS)

mod_g729_la_LIBADD = $(switch_builddir)/libfreeswitch.la

mod_g729_la_LDFLAGS = -avoid-version -module -no-undefined -shared

if HAVE_G729

mod_g729_la_CFLAGS += -I$(G729_DIR)/src/include

mod_g729_la_LIBADD += $(G729_A)

else

mod_g729_la_CFLAGS += -DG729_PASSTHROUGH

endif

新makefile

修改后的makefile.am。

include $(top_srcdir)/build/modmake.rulesam

MODNAME=mod_g729

G729_DIR=./g729a_v11

G729_BUILDDIR=./g729a_v11

G729_A=$(G729_BUILDDIR)/libg729.a

mod_LTLIBRARIES = mod_g729.la

mod_g729_la_SOURCES = mod_g729.c

mod_g729_la_CFLAGS = $(AM_CFLAGS)

mod_g729_la_LIBADD = $(switch_builddir)/libfreeswitch.la

mod_g729_la_LDFLAGS = -avoid-version -module -no-undefined -shared

mod_g729_la_CFLAGS += -I$(G729_DIR)

mod_g729_la_LIBADD += $(G729_A)

BUILT_SOURCES = $(G729_A)

$(mod_LTLIBRARIES) : $(G729_A)

$(G729_A):

cd $(G729_DIR) && $(MAKE)

clean-local:

cd $(G729_DIR) && $(MAKE) clean

修改后,可以自动编译安全G729模块。

总结

未经过充分测试,不清楚对其他业务流程的影响。

空空如常

求真得真

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/10 10:38:47

SpringBoot+Vue 美发管理系统管理平台源码【适合毕设/课设/学习】Java+MySQL

💡实话实说:C有自己的项目库存,不需要找别人拿货再加价。摘要 随着美容美发行业的快速发展,传统的人工管理模式已无法满足现代美发店的高效运营需求。客户预约混乱、员工排班低效、财务管理不透明等问题日益凸显,亟需一…

作者头像 李华
网站建设 2025/12/27 3:02:33

从零实现内存边界检查防止crash的实战案例

从零构建内存防护体系:如何用三重机制拦截越界访问,防止程序崩溃你有没有遇到过这样的场景?设备在实验室跑得好好的,一部署到现场就莫名其妙重启;日志里没有线索,core dump也抓不到有效信息。最后发现是某个…

作者头像 李华
网站建设 2025/12/27 3:01:06

PaddlePaddle镜像中的VisualDL可视化工具使用完全指南

PaddlePaddle镜像中的VisualDL可视化工具使用完全指南 在深度学习项目中,训练过程的“黑盒”特性常常让开发者陷入调试困境:损失曲线突然震荡、准确率停滞不前、梯度悄无声息地消失……仅靠打印日志已无法快速定位问题。尤其是在中文OCR、工业质检这类对…

作者头像 李华
网站建设 2025/12/27 3:00:27

Arduino Uno看门狗定时器:硬件复位原理图解说明

Arduino Uno看门狗定时器:从原理到实战的完整指南你有没有遇到过这样的场景——你的Arduino项目部署在偏远角落,突然某天程序“卡死”了,串口不再输出数据,LED停止闪烁,设备彻底失联?远程重启?不…

作者头像 李华