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: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库的更多相关文章
- freeswitch APR库哈希表
概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. 哈希表在开发中应用的非常广泛,主要场景是对查询效率要求较高的逻辑,是典型的空间换时间的数据结构实现. 大多数 ...
- freeswitch APR库线程读写锁
概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. 线程读写锁在多线程服务中有重要的作用.对于读数据比写数据频繁的服务,用读写锁代替互斥锁可以提高效率. 由于A ...
- freeswitch APR-UTIL库消息队列实现
概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来 ...
- freeswitch APR-UTIL库线程池实现分析
概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. APR库在之前的文章中已经介绍过了,APR-UTIL库是和APR并列的工具库,它们都是由APACHE开源出来 ...
- Eclipse启动Tomcat报错,系统缺少本地apr库
Eclipse启动Tomcat报错,系统缺少本地apr库. Tomcat中service.xml中的设置情况. 默认情况是HTTP协议的值:protocol="HTTP/1.1" ...
- 在windows上编译apr库
环境: win7_x64旗舰版.VS2015企业版.CMake3.8 一.下载apr相关库 1.1)expat下载地址:https://github.com/libexpat/libexpat/rel ...
- tomcat优化之安装并配置apr库
在谈到tomcat优化时,必然要说到apr库,这个库是C语言实现的,tomcat通过JNI方式使用该库可以大大提高性能. tomcat在使用apr时需要安装apr,apr-util和tomcat-na ...
- FreeSWITCH第三方库(其他)的简单介绍(三)
FreeSWITCH使用了大量的第三方库,本文档主要介绍关联相关库的信息: 音频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5486753.html 视频相关 ...
- FreeSWITCH第三方库(视频)的简单介绍(二)
FreeSWITCH使用了大量的第三方库,本文档主要介绍视频相关库的信息: 音频相关库的信息介绍参考:http://www.cnblogs.com/yoyotl/p/5486753.html 其他相关 ...
随机推荐
- 入坑Java的自学之路
# 入坑Java的自学之路 ## 基础知识 - 编程语言:Java python c- 基本算法- 基本网络知识 tcp/ip http/https- 基本的设计模式 ------ ## 工具方面 - ...
- [转载]Samba 4实现windows匿名访问Linux共享!
SMB(Server Messages Block,信息服务块). 由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows ...
- Redis之品鉴之旅(一)
Redis之品鉴之旅(一) 好知识就如好酒,需要我们坐下来,静静的慢慢的去品鉴.Redis作为主流nosql数据库,在提升性能的方面是不可或缺的.下面就拿好小板凳,我们慢慢的来一一品鉴. 1)redi ...
- Fortran学习笔记:03 数组(Array)
Fortran学习笔记目录 书接上回:Fortran学习笔记:02 流控制语句 数组(Array) 定义数组 一维数组 program main implicit none integer :: i ...
- DL4J实战之二:鸢尾花分类
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- spoj839 Optimal Marks(最小割,dinic)
题目大意: 给你一个无向图\(G(V,E)\). 每个顶点都有一个int范围内的整数的标记. 不同的顶点可能有相同的标记. 对于边\((u,v)\),我们定义\(Cost(u,v)=mark [u]\ ...
- Lynis 漏洞扫描工具部署及效果展示
Lynis 漏洞扫描工具部署及效果展示 介绍 Lynis是一个安全审计工具,它可以在Linux,macOS和其他基于Unix的系统上运行.Lynis的主要重点是执行系统的运行状况检查,它还有助于检测漏 ...
- 实现前后端分离,最好的方案就是SPA(Single Page Application)
从通常意义来讲,说到必须,就是指最佳实践上,实现前后端分离,最好的方案就是SPA.所以才会有 前后端分离=SPA 的近似,忽视了其中的差别.但是,既然有疑问了,我们就来看一下,为什么SPA是实现前后端 ...
- centos7谷歌chrome内网部署演示
上传需要的包,注释网关创建内网环境 [root@localhost ~]# ls anaconda-ks.cfg chrome mcw4 mcw4.tar.gz mcwchromerpm.tar.gz ...
- C++编译Dlib库出现LNK2001错误(原因是在Python中安装过Dlib)
问题 使用CMake编译Dlib库,编译得到lib文件后,新建一个VS工程想使用Dlib,却出现LNK2001:无法解析的外部符号的错误,且都与JPEG和PNG相关: 1>dlib19.17.9 ...