概述

freeswitch依赖库源代码基本都可以在libs目录下找到。

在freeswitch的官方手册中,可以找到freeswitch的依赖库表格,其中freeswitch的core核心代码依赖库主要包括apr、apr-util、pcre、resample、sqlite、srtp、teletone等。

其中,apr库和apr-util库是freeswitch最重要的依赖库,可以说fs就是在apr库的基础上搭建起来的。

apr库的全称是Apache Portable Runtime Project,是apache项目开放出来的底层依赖库,最主要的目标是为跨平台项目提供统一的功能接口实现,包括常见的linux、win32、unix等。

所以,构建在apr库之上的freeswitch本身具有很好的移植性。

下面我们来介绍一下freeswitch中使用的apr库。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.8.7

GCC:4.8.5

APR库的版本

freeswitch1.8.7版本中自带的apr库版本是v1.2.8,这个可以通过查看apr_version.h文件得到。

cd freeswitch-1.8.7/libs/apr/include

cat apr_version.h

#define APR_MAJOR_VERSION       1

#define APR_MINOR_VERSION       2

#define APR_PATCH_VERSION       8

而在apr库的官方网站上,最新的apr库版本是1.7.0

APR库的目录结构

apr库的主要目录和接口功能

类型名称

文件夹名称

描述

atomic

/apr/atomic

原子操作

dso

/apr/dso

动态加载共享库

file io

/apr/file_io

文件IO处理

mmap

/apr/mmap

内存映射文件

locks

/apr/locks

进程和线程互斥锁

memory

/apr/memory

内存池操作

network_io

/apr/network_io

网络IO处理

poll

/apr/poll

轮询IO

table

/apr/tables

Apache数组(堆栈)和表格以及哈希表

process

/apr/threadproc

进程和线程操作

user

/apr/user

用户和用户组操作

time

/apr/time

时间操作

string

/apr/strings

字符串操作

password

/apr/passwd

终端密码处理

misc

/apr/misc

大杂烩,不属于其余类的任何apr类型都可以放在里面

shmem

/apr/shmem

共享内存

random

/apr/random

随机数生成库

总结

freeswitch使用apr库作为基础,极大的方便了在不同系统之间的代码移植,但是同时也增加了整个代码结构的复杂性。

我们在日常使用过程中,只需要选定某一个固定的系统类型来进行定制开发就可以了,比如linux,从性能和稳定性上,都是很好的选择。


空空如常

求真得真

freeswitch APR库的更多相关文章

  1. freeswitch APR库哈希表

    概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. 哈希表在开发中应用的非常广泛,主要场景是对查询效率要求较高的逻辑,是典型的空间换时间的数据结构实现. 大多数 ...

  2. freeswitch APR库线程读写锁

    概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. 线程读写锁在多线程服务中有重要的作用.对于读数据比写数据频繁的服务,用读写锁代替互斥锁可以提高效率. 由于A ...

  3. freeswitch APR-UTIL库消息队列实现

    概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来 ...

  4. freeswitch APR-UTIL库线程池实现分析

    概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来 ...

  5. Eclipse启动Tomcat报错,系统缺少本地apr库

    Eclipse启动Tomcat报错,系统缺少本地apr库. Tomcat中service.xml中的设置情况. 默认情况是HTTP协议的值:protocol="HTTP/1.1" ...

  6. 在windows上编译apr库

    环境: win7_x64旗舰版.VS2015企业版.CMake3.8 一.下载apr相关库 1.1)expat下载地址:https://github.com/libexpat/libexpat/rel ...

  7. tomcat优化之安装并配置apr库

    在谈到tomcat优化时,必然要说到apr库,这个库是C语言实现的,tomcat通过JNI方式使用该库可以大大提高性能. tomcat在使用apr时需要安装apr,apr-util和tomcat-na ...

  8. FreeSWITCH第三方库(其他)的简单介绍(三)

    FreeSWITCH使用了大量的第三方库,本文档主要介绍关联相关库的信息: 音频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5486753.html 视频相关 ...

  9. FreeSWITCH第三方库(视频)的简单介绍(二)

    FreeSWITCH使用了大量的第三方库,本文档主要介绍视频相关库的信息: 音频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5486753.html 其他相关 ...

随机推荐

  1. P7444-「EZEC-7」猜排列【dp】

    正题 题目链接:https://www.luogu.com.cn/problem/P7444 题目大意 一个长度为\(n\)的排列,已知每个\(c_i\)表示那个排列中\(mex\)为\(i\)的区间 ...

  2. 自从学会了Python自动化Pytest框架,领导再也不敢在我背后指手划脚了

    前言 大家都知道Python有自带的单元测试框架unittest,那为什么还要学习Pytest呢?先了解下Pytest优点 pytest: pytest是一个非常成熟的全功能的Python测试框架,是 ...

  3. netty系列之:使用netty搭建websocket客户端

    目录 简介 浏览器客户端 netty对websocket客户端的支持 WebSocketClientHandshaker WebSocketClientCompressionHandler netty ...

  4. DL4J实战之四:经典卷积实例(GPU版本)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. golang []byte和string的高性能转换

    golang []byte和string的高性能转换 在fasthttp的最佳实践中有这么一句话: Avoid conversion between []byte and string, since ...

  6. 互联网公司作息表「GitHub 热点速览 v.21.42」

    作者:HelloGitHub-小鱼干 检测一家公司是否值得一去,除了高薪之外,还有时薪的算法.即便是同样的时薪,在一家能随时摸鱼的公司,岂不是人生快事.WorkingTime 便是上周很火的互联网作息 ...

  7. git 修改最后一次提交

    git 修改最后一次提交 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了. 此时,可以运行带有 --amend 选项的提交命令来重新提交:git commit --amend -m ...

  8. ORB_SLAM3 -- 配置安装

    安装环境 Ubuntu20.04 ORB_SLAM3依赖项安装 opencv3 ORB_SLAM3可用opencv3或opencv4编译,作者这里安装测试了opencv3 Step1: 安装openc ...

  9. Scrum Meeting 10

    第10次例会报告 日期:2021年05月30日 会议主要内容概述: 目前组员均无暇软工,进展较慢. 一.进度情况 我们采用日报的形式记录每个人的具体进度,链接Home · Wiki,如下记录仅为保证公 ...

  10. BUAA-软件工程-个人总结与心得

    提问回顾以及个人总结 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 学习软件开发的过程,团队之间的写作 ...