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
