什么是Apache APR

APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。

随着Apache的进一步开 发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。目前APR主要还是由Apache使用,不过由于APR的较好的移植性,因此一些需要进行移植的C程序也开始使用APR,开源项目比如 Flood loader(http://httpd.apache.org/test/flood/,该项目用于服务器压力测试,不仅仅适用于Apache)、FreeSwitch(www.freeswitch.org),JXTA-C(http://jxta-c.jxta.org,C版本的JXTA点对点平台实现);商业的项目则包括Blogline(http://www.bloglines.com/,covalent(http://www.covalent.net)等等。

APR使得平台细节的处理进行下移。对于应用程序而言,它们根本就不需要考虑具体的平台,不管是Unix、Linux还是Window,应用程序执行的接口基本都是统一一致的。因此对于APR而言,可移植性和统一的上层接口是其考虑的一个重点。而APR最早的目的并不是如此,它最早只是希望将Apache中用到的所有代码合并为一个通用的代码库,然而这不是一个正确的策略,因此后来APR改变了其目标。有的时候使用公共代码并不是一件好事,比如如何将一个请求映射到线程或者进程是平台相关的,因此仅仅一个公共的代码库并不能完成这种区分。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能。

APR的最早的一个目标就是为所有的平台(不是部分)提供一个公共的统一操作函数接口,这是一个非常了不起的目的,当然也是不现实的一个目标。我们不可能支持所有平台的所有特征,因此APR目前只能为大多数平台提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。为了能够实现这个目标,APR开发者必须为那些不能运行于所有平台的特性创建了一系列的特征宏(FEATURE MACROS)以在各个平台之间区分这些特征。这些特征宏定义非常简单,通常用APR_HAS_FEATURE参数设置:

如果某个平台具有这个特性,则该宏必须设置为true,比如Linux和window都具有内存映射文件,同时APR提供了内存映射文件的操作接口,因此在这两个平台上,APR_HAS_MMAP宏必须设置,同时ap_mmap_*函数应该将磁盘文件映射为内存并返回适当的状态码。如果你的操作系统并不支持内存映射,那么APR_HAS_MMAP必须设置为0,而且所有的ap_mmap_*函数也可以不需要定义。第二步就是对于那些在程序中使用了不支持的函数必须提出警告。

目前APR中支持的基本类型包括下面几种:

表3-1 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


随机数生成库

 apache 的apr项目目前有三部分组成,分别是apr、apr-util、apr-iconv
apr中包含了一些通用的开发组件,包括mmap,DSO等等
apr-util该目录中也是包含了一些常用的开发组件。这些组件与apr目录下的相比,它们与apache的关系更加密切一些。比如存储段和存储段组,加密等等。
apr-iconv包中的文件主要用于实现iconv编码。目前的大部分编码转换过程都是与本地编码相关的。在进行转换之前必须能够正确地设置本地编码。因此假如两个非本地编码A和B需要转换,则转换过程大致为A->Local以及Local->B或者B->Local以及Local->A。

以上三个包最新下载地址为:

http://labs.mop.com/apache-mirror//apr/apr-1.4.6.tar.gz
http://labs.mop.com/apache-mirror//apr/apr-util-1.4.1.tar.gz
http://labs.mop.com/apache-mirror//apr/apr-iconv-1.2.1.tar.gz

关于apr的安装和参数设置,请参看http://www.361way.com/manapache/install.html

时间: 2024-08-27 05:56:45

什么是Apache APR的相关文章

apache apr的编译和引用

各种巧合吧,需要从JAVA转C,经过这一段时间的心理折磨,还是决定先把精力放到C上. 想快速的提高自己,学习相关语言的经典的源码是唯一的“捷径”,从Apache apr开始吧. 一.下载源代码 官网地址:http://apr.apache.org/ 下载apr和apr-util相关的源码包. 二.编译源码包 编译三部曲,不用赘述了吧~ ①./configure --prefix=/usr/local(编译生成的库文件的指定安装路径) 更多的选项可以执行./configure -h查看,例如编译a

apache apr介绍

APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库.在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数. 随着Apache的进一步开 发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目.这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已.目

SDK/JDK,Shell/Shell脚本,Apache/APR ,MTK

SDK 软件开发工具包(SoftwareDevelopmentKit) API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API而使操作系统去执行应用程序的命令(动作). Android SDK 指的是Android专属的软件开发工具包 DLL,即 Dynamic Link Library(动态链接库).在 Windows 环境下含有大量 .dll格式的文件,.dll 文件不能直接执行

Apache安装编译遇到APR的问题

http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.27.tar.bz2Apache下载链接 在解压Apache源码包进入目录运行 #./configure --prefix=/usr/local/apach时出现: ................ checking for APR... noconfigure: error: APR not found . Please read the documentation 用yum

[转]SVN安装问题The Apache Portable Runtime (APR) library cannot be found

http://blog.csdn.net/ckwer2008/article/details/47972601 Linux很多地方编译的时候都会用到apr 如果找不到apr就会报错 configure: WARNING: APR not found The Apache Portable Runtime (APR) library cannot be found. Please install APR on this system and configure Subversion with th

centos6.5下Apache 安装

1.下载apache  www.apache.org 找到相应的地址复制后 weget即可,也可以用下面这个 wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.23.tar.gz tar -xf httpd-2.4.23.tar.gz ./configure  --prefix=/application/apache2.4.23 --enable-deflate  --enable-expires --enable-header  --ena

Linux——搭建PHP开发环境第一步:apache

原文链接:http://www.2cto.com/os/201511/450258.html ##### Apache 编译安装[[email protected] ~]# yum install gcc gcc-c++ make wget [[email protected] ~]# yum install zlib-devel openssl-devel [[email protected] ~]# yum install -y perl perl-devel 1) apr [[email 

linux apache 2.4.20版本安装

centos  6.7_64位                apache 2.4.20版本 yum install   gcc     gcc-c++   make    uuid-devel    libuuid-devel    unzip    -y apr中包含了一些通用的开发组件,包括mmap,DSO等等 apr-util该目录中也是包含了一些常用的开发组件.这些组件与apr目录下的相比,它们与apache的关系更加密切一些.比如存储段和存储段组,加密等等. apr-iconv包中的

为Linux上的Tomcat安装apr支持

在安装并配置好JDK和tomcat之后,就可以提供web的访问支持了,但是在启动的信息里面,会有相关的提示,说的意思就是要求你安装apr支持,而安装apr支持需要使用源代码一步一步来. 下面就请跟着我,使用源代码方式安装apr支持. 0.前提 ①请安装并配置好JDK和tomcat,并且创建链接文件,使得 /usr/java/jdk 相当于JDK的根目录 /usr/local/tomcat 相当于tomcat的根目录. ② 已经安装好了openssl的开发包,不管是源代码方式安装还是使用包管理器方