概述
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,从性能和稳定性上,都是很好的选择。
空空如常
求真得真