pcre源码安装
⑴ Apache遇到的问题 APR not found问题的解决方法
解决Apache遇到的APR not found问题的方法如下:
下载并安装APR:
下载并安装APR-Util:
- 访问APR-Util下载页面下载APR-Util源码包。
- 解压源码包,并进入解压后的目录。
- 运行./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr命令进行配置(注意将/usr/local/apr替换为你实际安装APR的路径)。
- 运行make命令进行编译。
- 运行make install命令进行安装。
下载并安装PCRE库:
- 访问PCRE下载页面下载PCRE源码包。
- 解压源码包,并进入解压后的目录。
- 运行./configure --prefix=/usr/local/pcre命令进行配置。
- 运行make命令进行编译。
- 运行make install命令进行安装。
重新配置Apache:
- 在重新配置Apache时,加上--with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre参数,确保Apache能够找到之前安装的APR、APR-Util和PCRE库。
编译并安装Apache:
- 运行make命令进行编译。
- 运行make install命令进行安装。
设置Apache启动和自启动:
- 复制Apache启动文件到/sbin/目录,方便管理。
- 在/etc/rc.d/rc.local文件中添加启动Apache的命令,或者将httpd服务添加到ntsysv服务管理工具中。
- 修改Apache启动脚本的权限,并确保其能被系统服务管理工具识别。
防火墙设置:
- 如果局域网内其他电脑无法访问Apache服务器,可能是因为防火墙阻止了80端口的访问。可以停止防火墙服务,或者放开80端口。
通过以上步骤,你应该能够解决Apache遇到的APR not found问题,并成功安装和配置Apache服务器。如果在安装过程中遇到任何错误,请仔细检查每一步的配置和命令是否正确执行。
⑵ pcre验证是否安装
可以通过以下几种方法验证PCRE是否安装:
命令行查询- RPM包管理系统(如CentOS/RHEL):在终端执行 rpm -qa | grep pcre ,若输出包含 pcre 或 pcre-devel,则已安装,如 pcre-8.32-17.el7.x86_64。
- DEB包管理系统(如Ubuntu/Debian):使用命令 dpkg -l | grep pcre ,若有输出则表明已安装。
- 通用方法(适用于源码安装):运行 pcre-config --version ,若返回版本号(如 8.45),则安装成功,但需确保 pcre-config 在环境变量 PATH 中。
源码安装通常默认路径为 /usr/local/lib 或指定路径(如 /usr/local/pcre),可通过 ls /usr/local/lib | grep libpcre 确认库文件;也可通过 ls /usr/local/include | grep pcre.h 检查头文件。
编译验证编写简单C程序(如 test_pcre.c),代码为 #include <pcre.h> int main() { return 0; } ,使用 gcc test_pcre.c -lpcre -o test_pcre 进行编译。若无报错,且生成可执行文件 test_pcre,则PCRE可用。
需注意,部分Linux发行版(如CentOS 7)默认预装PCRE基础库,但可能缺少开发包(pcre-devel),可通过 yum install pcre-devel 补充。同时,Apache、Nginx等软件对PCRE版本有要求,建议通过 pcre-config --version 确认版本是否满足需求。
⑶ c语言 正则库 pcre 教程 (windows环境)
1、编译PCRE正则表达式库
(1) (MinGW + MSYS)
将PCRE源码包直接拷贝到MSYS目录下,(如:C:\MSYS\1.0\pcre\)
运行msys.bat启动MSYS,
在命令行输入
cd / // 回根目录
cd pcre // 进入PCRE目录
./configure // 配置编译
make // 编译全部
完成后,会在C:\MSYS\1.0\pcre\.libs\ 下生成所需要的文件:
libpcre-0.dll // PCRE的动态链接库
libpcre.dll.a // 调用PCRE动态链接库所用的LIB
libpcre.a // PCRE静态链接库
再配合上C:\MSYS\1.0\pcre\目录下的"pcre.h",就可以在程序中加入正则表达式支持了:)
(2) (于windows平台手动编译pcre,转载)
将 config.h.generic 重命名为 config.h
设置其中的 HAVE_BCOPY 参数为 0 (因为windows平台无b()函数)
重命名 pcre.h.generic 为 pcre.h.
重命名 pcre_chartables.c.dist 为 pcre_chartables.c.
编译 dftables.c 成可执行文件,要加入参数 -DHAVE_CONFIG_H,以便导入 config.h 文件中的设置
/* 重命名 pcre_chartables.c.dist 为 pcre_chartables.c */
运行编译的可执行文件 dftables.exe ,参数为 pcre_chartables.c
即 dftables.exe pcre_chartables.c
新建工程,包含下列文件,编译成lib文件即可
pcre_internal.h
ucp.h
ucpinternal.h
ucptable.h
pcre_chartables.c
pcre_compile.c
pcre_config.c
pcre_dfa_exec.c
pcre_exec.c
pcre_fullinfo.c
pcre_get.c
pcre_globals.c
pcre_info.c
pcre_maketables.c
pcre_newline.c
pcre_ord2utf8.c
pcre_refcount.c
pcre_study.c
pcre_tables.c
pcre_try_flipped.c
pcre_ucp_searchfuncs.c
pcre_valid_utf8.c
pcre_version.c
pcre_xclass.c
这样就可以生成 libpcre.a 文件了 (vc,bcc生成的是pcre.lib,大同小异)
2、使用生成的 libpcre.a (静态链接库)
在你的程序中添加:
#define PCRE_STATIC // 开启静态链接库支持(一定要添加该行,否则无法使用静态链接库)
#include "pcre.h" // PCRE头文件
并且添加 libpcre.a 到工程中,然后就可以在程序中使用PCRE函数了:)
编译选项 添加 /MT ,无头文件预编译.
3、使用生成的 libpcre-0.dll 和 libpcre.dll.a (动态链接库)
在你的程序中添加:
#include "pcre.h" // PCRE头文件
并且添加 libpcre.dll.a 到工程中,然后就可以在程序中使用PCRE函数了:)
================================================================================
命令行下的批处理解决方法 .如果已经下载,可以不用第一行.
goto START
首先确保控制台环境中有:
1、VC6命令行编译环境
2、wget.exe、unzip.exe、sed.exe、mv.exe
然后执行这个批处理文件,就可以得到VC版本的pcr.lib。
:START
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.zip
unzip pcre-7.7.zip
cd pcre-7.7
sed -e "s/#define HAVE_BCOPY 1/#define HAVE_BCOPY 0/g" config.h.generic > config.h
mv pcre.h.generic pcre.h
mv pcre_chartables.c.dist pcre_chartables.c
cl -MD -DHAVE_CONFIG_H dftables.c
dftables.exe pcre_chartables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_chartables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_compile.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_config.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_dfa_exec.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_exec.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_fullinfo.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_get.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_globals.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_info.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_maketables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_newline.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ord2utf8.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_refcount.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_study.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_tables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_try_flipped.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ucp_searchfuncs.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_valid_utf8.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_version.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_xclass.c
lib -out:libpcr.lib pcre_chartables.obj pcre_compile.obj pcre_config.obj pcre_dfa_exec.obj pcre_exec.obj pcre_fullinfo.obj pcre_get.obj pcre_globals.obj pcre_info.obj pcre_maketables.obj pcre_newline.obj pcre_ord2utf8.obj pcre_refcount.obj pcre_study.obj pcre_tables.obj pcre_try_flipped.obj pcre_ucp_searchfuncs.obj pcre_valid_utf8.obj pcre_version.obj pcre_xclass.obj
这样就出来了: pcre.h + libpcr.lib
==============================================================================
最近使用VC编译了一下她的源代码,其实步骤很简单, 如下
1 一些源文件改名
config.h.generic 改名为 config.h (注意里面的配置)
pcre.h.generic 改名为 pcre.h
pcre_chartables.c.dist 改名为 pcre_chartables.c
2 建立VC工程
建立一个VC的DLL工程,去掉原有的包含文件
将PCRE的所有pcre_*.c都加进去, pcre后面没有_的不要加, 后缀名是.cc的不要加
可以参考上面的.还有.h 文件也是要的.
3 修改工程设置
增加工程预编译宏 HAVE_CONFIG_H
不使用预编译头 Not Using Precompiled Headers
编译选项 添加 /MT
OK 完成以上三步,就可以在 VC 上编译通过了。
4 编译结果
使用时只需要编译出来的 .DLL .Lib 和 源代码目录的 pcre.h