news 2026/4/27 0:00:33

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/4/17 19:29:32

从零实现工业网关通信:USB转485驱动实战

从零构建工业网关通信链路:深入实战USB转485驱动开发在某次现场调试中,我曾遇到一个“诡异”的问题——网关明明已经正确发送了Modbus查询指令,但PLC始终没有响应。抓包发现,每次数据只传出去一半就断了。排查数小时后才发现&…

作者头像 李华
网站建设 2026/4/23 10:07:16

PaddlePaddle开源平台全面解析:从入门到GPU加速训练

PaddlePaddle开源平台全面解析:从入门到GPU加速训练 在AI技术席卷各行各业的今天,深度学习框架早已不再是科研实验室里的“奢侈品”,而是企业构建智能系统的核心基础设施。面对图像识别、语音交互、文本理解等复杂任务,开发者需要…

作者头像 李华
网站建设 2026/4/25 22:18:28

MicroPython在ESP32上的定时器配置超详细版说明

MicroPython 在 ESP32 上的定时器配置:从原理到实战的完整指南你有没有遇到过这样的场景?想让一个 LED 每 500ms 闪烁一次,但time.sleep(500)却卡住了整个程序;需要每隔几秒读取一次温湿度传感器,却发现网络连接超时、…

作者头像 李华
网站建设 2026/4/24 23:52:33

图解说明Arduino Uno引脚功能及使用方法

从零搞懂Arduino Uno引脚:不只是接线,更是设计思维的起点你有没有过这样的经历?手握一块Arduino Uno,面对密密麻麻的引脚,心里默念:“D0到D13是数字口,A0到A5是模拟口……”然后把传感器一插、L…

作者头像 李华
网站建设 2026/4/22 21:04:41

PaddleOCR实战教程:基于PaddlePaddle镜像的高精度文字识别方案

PaddleOCR实战:基于PaddlePaddle镜像的高精度文字识别方案 在数字化转型浪潮中,如何快速、准确地从图像中提取文字信息,已成为金融、政务、制造等多个行业的共性需求。尤其是在中文场景下,传统OCR工具面对复杂字体、模糊背景或排版…

作者头像 李华