freeswitch|freeswitch APR库

freeswitch|freeswitch APR库
文章图片


概述 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:CentOSrelease 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/includecat apr_version.h#define APR_MAJOR_VERSION1#define APR_MINOR_VERSION2#define APR_PATCH_VERSION8


而在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|freeswitch APR库】

    推荐阅读