當前位置:首頁 » 編程軟體 » pcre編譯

pcre編譯

發布時間: 2022-08-22 12:30:25

A. jdk nginx. redis 在arm和x86要分別編譯

一、注意openssl和pcre只需要把源碼壓縮,不需要單獨交叉編譯!
開始的時候不知道,傻傻的把這兩個庫弄半天把它們編譯過去了。誰知道nginx的--with-pcre和--with-openssl選項,指定的是這兩個庫源代碼的路徑,並非安裝路徑!nginx的編譯系統只會從/usr、/usr/local等少數幾個目錄查找是否有預編譯的pcre、zlib、openssl等庫。對於交叉編譯,直接把交叉編譯後的pcre等安裝在/usr、/usr/local顯然不合適,因此需要使用--with-pcre和--with-openssl指定源代碼的位置

二、交叉編譯nginx
在x64 linux上面編譯非常簡單的nginx,沒想到在交叉編譯的時候巨多坑。下面一個configure是編譯成功的配置

進入/usr/local/src目錄,創建nginx文件夾。入剛創建的nginx目錄,下載nginx的tar包,解壓,進入解壓生成的目錄,進行配置(後面有補充,建議通讀一遍)編譯安裝查找安裝路徑,在執行make編譯時,可以添加要編譯的參數,已安裝完成,比如我現在要新增 http_stub_status_mole 模塊參數,那麼我只要把該參數添加進去然後重新編譯即可,需要注意的是原先編譯過的參數也要加進來。
進入nginx的安裝目錄,因為我安裝的時候沒有添加任何參數,所以這里我只需要執行

我這里只需要這一個模塊,如果你安裝的nginx還使用其他的模塊,記得在上面的編譯命令中加上。
另外,這里只能 make 千萬別 make install,否則就覆蓋安裝了。

  • make完成後,在源碼目錄下會有一個objs目錄,objs目錄下就多了個nginx,這個就是新版本的程序了;

  • 然後將objs目錄下的nginx替換之前已經安裝過的nginx(建議將舊的nginx程序做下備份)


B. 如何在Windows下通過Cmake編譯和使用PCRE

CMake是一個比make更高級的編譯配置工具,它可以根據不同平台、不同的編譯器,生成相應的Makefile或者vcproj項目。
通過編寫CMakeLists.txt,可以控制生成的Makefile,從而控制編譯過程。CMake自動生成的Makefile不僅可以通過make命令構建項目生成目標文件,還支持安裝(make install)、測試安裝的程序是否能正確執行(make test,或者ctest)、生成當前平台的安裝包(make package)、生成源碼包(make package_source)、產生Dashboard顯示數據並上傳等高級功能,只要在CMakeLists.txt中簡單配置,就可以完成很多復雜的功能,包括寫測試用例。
如果有嵌套目錄,子目錄下可以有自己的CMakeLists.txt。
總之,CMake是一個非常強大的編譯自動配置工具,支持各種平台,KDE也是用它編譯的,感興趣的可以試用一下。

准備活動:
(1)安裝cmake。
下載地址:
根據自己的需要下載相應的包即可,Windows下可以下載zip壓縮的綠色版本,還可以下載源代碼。
Windows下CMake的使用
(2)運行cmake的方法。(GUI、命令行)

CMake使用步驟:
運行GUI的cmake界面:
cmake-2.8.1-win32-x86\bin\cmake-gui.exe
Windows下CMake的使用
執行Configure:
運行之後,生成了如下文件:
Windows下CMake的使用
生成Makefile:
執行Generate之後生成如下文件:
Windows下CMake的使用
運行make進行編譯:
Windows下CMake的使用
編譯完成後,在build目錄生成Tutorial.exe,運行Tutorial.exe 25就可以看到運行結果:
Windows下CMake的使用
運行make install安裝程序:
Windows下CMake的使用
運行make test進行測試:
Windows下CMake的使用

通過cmake tutorial學習CMake配置方法

可以在源代碼的Tests/Turorial目錄中找到這個手冊對應的代碼。
Windows下CMake的使用
1、Step1。
(如果不知道如何使用cmake,以及如何使用編譯產生的Turorial.exe,可先看下前面「CMake使用步驟」的說明,它以Step4為例詳細介紹了使用過程,Step1的配置可能不夠完全,比如無法運行make install,無法運行make test,但可以參考。)
簡單的程序編譯。
(1)運行GUI的cmake,指定要編譯的源代碼路徑和二進制文件路徑(會自動創建)。
Windows下CMake的使用
(2)點擊Configure,配置成功後,再點擊Generate。
配置需要選擇合適的編譯器,雖然我安裝了VC2008,但沒有配置成功;選擇Unix Makefiles,配置成功,它自動找到了DevC++下的gcc.exe等編譯器。
Windows下CMake的使用
(3)在build3目錄執行make,就能夠編譯生成Turorial.exe了。
D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3>make
Linking CXX executable Tutorial.exe
[100%] Built target Tutorial
可以運行一下Turorial.exe:
D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3>Tutorial.exe
Tutorial.exe Version 1.0
Usage: Tutorial.exe number
D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3>Tutorial.exe 4
The square root of 4 is 2
2、Step2
把子目錄編譯為庫,並且鏈接到最終的可執行文件。
include_directories ("${PROJECT_SOURCE_DIR}/MathFunctions")
add_subdirectory (MathFunctions) # 使得子目錄MathFunctions也能被編譯

# add the executable
add_executable (Tutorial tutorial.cxx)
target_link_libraries (Tutorial MathFunctions)
產生makefile:
在GUI上點擊Configure,之後Generate還是灰色,再次點擊Configure,Generate就可以點擊了。
編譯:

C. pcre編譯沒有UTF支持問題,怎麼解決

關於 PCRE_UTF8 support 問題

    PHP錯誤:

    preg_replace(): Compilation failed: this version of PCRE is not compiled with PCRE_UTF8 support

    上面的報錯會導致preg_replace出錯,在wordpress中會引起上傳圖片後圖片缺少路徑,變成1.,2.等惡心的問題。

    解決的辦法如下:

    1. pcre --version 查看pcre版本

    2.到http://sourceforge.net/projects/pcre/files/pcre/ 下載對應版本的pcre

    3.重新編譯:./configure --enable-utf8

    make make install

    重啟apache或者fpm,問題解決。

D. 如何 編譯 ngx

一、必要軟體准備
1.安裝pcre

為了支持rewrite功能,我們需要安裝pcre

復制代碼代碼如下:
# yum install pcre* //如過你已經裝了,請跳過這一步

2.安裝openssl
需要ssl的支持,如果不需要ssl支持,請跳過這一步

復制代碼代碼如下:
# yum install openssl*

3.gzip 類庫安裝

復制代碼代碼如下:
yum install zlib zlib-devel

4.安裝wget
下載nginx使用,如果已經安裝,跳過這一步

復制代碼代碼如下:
# yum install wget

二、安裝nginx

1.下載

復制代碼代碼如下:
wget http://nginx.org/download/nginx-1.7.0.tar.gz

2.解壓

復制代碼代碼如下:

tar -zxvf nginx-1.7.0.tar.gz

3.編譯和安裝
執行如下命令:

復制代碼代碼如下:

# cd nginx-1.7.0
# ./configure --prefix=/usr/local/nginx-1.7.0 \
--with-http_ssl_mole --with-http_spdy_mole \
--with-http_stub_status_mole --with-pcre

–with-http_stub_status_mole:支持nginx狀態查詢
–with-http_ssl_mole:支持https
–with-http_spdy_mole:支持google的spdy,想了解請網路spdy,這個必須有ssl的支持
–with-pcre:為了支持rewrite重寫功能,必須制定pcre

最後輸出如下內容,表示configure OK了。

復制代碼代碼如下:

checking for zlib library ... found
creating objs/Makefile
Configuration summary
+ using system PCRE library
+ using system OpenSSL library
+ md5: using OpenSSL library
+ sha1: using OpenSSL library
+ using system zlib library
nginx path prefix: "/usr/local/nginx-1.7.0"
nginx binary file: "/usr/local/nginx-1.7.0/sbin/nginx"
nginx configuration prefix: "/usr/local/nginx-1.7.0/conf"
nginx configuration file: "/usr/local/nginx-1.7.0/conf/nginx.conf"
nginx pid file: "/usr/local/nginx-1.7.0/logs/nginx.pid"
nginx error log file: "/usr/local/nginx-1.7.0/logs/error.log"
nginx http access log file: "/usr/local/nginx-1.7.0/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp"
# make //確定你的伺服器有安裝make,如果沒有安裝請執行yum install make

# make install

三、啟動、關閉、重置nginx
啟動:直接執行以下命令,nginx就啟動了,不需要改任何配置文件,nginx配置多域名虛擬主機請參考後續文章.

復制代碼代碼如下:
/usr/local/nginx-1.7.0/sbin/nginx

試試訪問:直接使用curl命令來讀取web信息

復制代碼代碼如下:

[root@ns conf]
# curl -s http://localhost | grep nginx.com
nginx.com.

關閉:

復制代碼代碼如下:
/usr/local/nginx-1.7.0/sbin/nginx -s stop

重置:當你有修改配置文件的時候,只需要reload以下即可

復制代碼代碼如下:
/usr/local/nginx-1.7.0/sbin/nginx -s reload

整個nginx的安裝就到這里結束了。

四、nginx編譯參數詳解

復制代碼代碼如下:

–prefix= 指向安裝目錄
–sbin-path 指向(執行)程序文件(nginx)
–conf-path= 指向配置文件(nginx.conf)
–error-log-path= 指向錯誤日誌目錄
–pid-path= 指向pid文件(nginx.pid)
–lock-path= 指向lock文件(nginx.lock)(安裝文件鎖定,防止安裝文件被別人利用,或自己誤操作。)
–user= 指定程序運行時的非特權用戶
–group= 指定程序運行時的非特權用戶組
–builddir= 指向編譯目錄
–with-rtsig_mole 啟用rtsig模塊支持(實時信號)
–with-select_mole 啟用select模塊支持(一種輪詢模式,不推薦在高載環境下使用)禁用:–without-select_mole
–with-poll_mole 啟用poll模塊支持(功能與select相同,與select特性相同,為一種輪詢模式,不推薦在高載環境下使用)
–with-file-aio 啟用file aio支持(一種APL文件傳輸格式)
–with-ipv6 啟用ipv6支持
–with-http_ssl_mole 啟用ngx_http_ssl_mole支持(使支持https請求,需已安裝openssl)
–with-http_realip_mole 啟用ngx_http_realip_mole支持(這個模塊允許從請求標頭更改客戶端的IP地址值,默認為關)
–with-http_addition_mole 啟用ngx_http_addition_mole支持(作為一個輸出過濾器,支持不完全緩沖,分部分響應請求)
–with-http_xslt_mole 啟用ngx_http_xslt_mole支持(過濾轉換XML請求)
–with-http_image_filter_mole 啟用ngx_http_image_filter_mole支持(傳輸JPEG/GIF/PNG 圖片的一個過濾器)(默認為不啟用。gd庫要用到)
–with-http_geoip_mole 啟用ngx_http_geoip_mole支持(該模塊創建基於與MaxMind GeoIP二進制文件相配的客戶端IP地址的ngx_http_geoip_mole變數)
–with-http_sub_mole 啟用ngx_http_sub_mole支持(允許用一些其他文本替換nginx響應中的一些文本)
–with-http_dav_mole 啟用ngx_http_dav_mole支持(增加PUT,DELETE,MKCOL:創建集合,COPY和MOVE方法)默認情況下為關閉,需編譯開啟
–with-http_flv_mole 啟用ngx_http_flv_mole支持(提供尋求內存使用基於時間的偏移量文件)
–with-http_gzip_static_mole 啟用ngx_http_gzip_static_mole支持(在線實時壓縮輸出數據流)
–with-http_random_index_mole 啟用ngx_http_random_index_mole支持(從目錄中隨機挑選一個目錄索引)
–with-http_secure_link_mole 啟用ngx_http_secure_link_mole支持(計算和檢查要求所需的安全鏈接網址)
–with-http_degradation_mole 啟用ngx_http_degradation_mole支持(允許在內存不足的情況下返回204或444碼)
–with-http_stub_status_mole 啟用ngx_http_stub_status_mole支持(獲取nginx自上次啟動以來的工作狀態)
–without-http_charset_mole 禁用ngx_http_charset_mole支持(重新編碼web頁面,但只能是一個方向–伺服器端到客戶端,並且只有一個位元組的編碼可以被重新編碼)
–without-http_gzip_mole 禁用ngx_http_gzip_mole支持(該模塊同-with-http_gzip_static_mole功能一樣)
–without-http_ssi_mole 禁用ngx_http_ssi_mole支持(該模塊提供了一個在輸入端處理處理伺服器包含文件(SSI)的過濾器,目前支持SSI命令的列表是不完整的)
–without-http_userid_mole 禁用ngx_http_userid_mole支持(該模塊用來處理用來確定客戶端後續請求的cookies)
–without-http_access_mole 禁用ngx_http_access_mole支持(該模塊提供了一個簡單的基於主機的訪問控制。允許/拒絕基於ip地址)
–without-http_auth_basic_mole禁用ngx_http_auth_basic_mole(該模塊是可以使用用戶名和密碼基於http基本認證方法來保護你的站點或其部分內容)
–without-http_autoindex_mole 禁用disable ngx_http_autoindex_mole支持(該模塊用於自動生成目錄列表,只在ngx_http_index_mole模塊未找到索引文件時發出請求。)
–without-http_geo_mole 禁用ngx_http_geo_mole支持(創建一些變數,其值依賴於客戶端的IP地址)
–without-http_map_mole 禁用ngx_http_map_mole支持(使用任意的鍵/值對設置配置變數)
–without-http_split_clients_mole 禁用ngx_http_split_clients_mole支持(該模塊用來基於某些條件劃分用戶。條件如:ip地址、報頭、cookies等等)
–without-http_referer_mole 禁用disable ngx_http_referer_mole支持(該模塊用來過濾請求,拒絕報頭中Referer值不正確的請求)
–without-http_rewrite_mole 禁用ngx_http_rewrite_mole支持(該模塊允許使用正則表達式改變URI,並且根據變數來轉向以及選擇配置。如果在server級別設置該選項,那麼他們將在 location之前生效。如果在location還有更進一步的重寫規則,location部分的規則依然會被執行。如果這個URI重寫是因為location部分的規則造成的,那麼 location部分會再次被執行作為新的URI。 這個循環會執行10次,然後Nginx會返回一個500錯誤。)
–without-http_proxy_mole 禁用ngx_http_proxy_mole支持(有關代理伺服器
–without-http_fastcgi_mole 禁用ngx_http_fastcgi_mole支持(該模塊允許Nginx 與FastCGI 進程交互,並通過傳遞參數來控制FastCGI 進程工作。 )FastCGI一個常駐型的公共網關介面。
–without-http_uwsgi_mole 禁用ngx_http_uwsgi_mole支持(該模塊用來醫用uwsgi協議,uWSGI伺服器相關)
–without-http_scgi_mole 禁用ngx_http_scgi_mole支持(該模塊用來啟用SCGI協議支持,SCGI協議是CGI協議的替代。它是一種應用程序與HTTP服務介面標准。它有些像FastCGI但他的設計 更容易實現。)
–without-http_memcached_mole 禁用ngx_http_memcached_mole支持(該模塊用來提供簡單的緩存,以提高系統效率)
-without-http_limit_zone_mole 禁用ngx_http_limit_zone_mole支持(該模塊可以針對條件,進行會話的並發連接數控制)
–without-http_limit_req_mole 禁用ngx_http_limit_req_mole支持(該模塊允許你對於一個地址進行請求數量的限制用一個給定的session或一個特定的事件)
–without-http_empty_gif_mole 禁用ngx_http_empty_gif_mole支持(該模塊在內存中常駐了一個1*1的透明GIF圖像,可以被非常快速的調用)
–without-http_browser_mole 禁用ngx_http_browser_mole支持(該模塊用來創建依賴於請求報頭的值。如果瀏覽器為modern ,則$modern_browser等於modern_browser_value指令分配的值;如 果瀏覽器為old,則$ancient_browser等於 ancient_browser_value指令分配的值;如果瀏覽器為 MSIE中的任意版本,則 $msie等於1)
–without-http_upstream_ip_hash_mole 禁用ngx_http_upstream_ip_hash_mole支持(該模塊用於簡單的負載均衡)
–with-http_perl_mole 啟用ngx_http_perl_mole支持(該模塊使nginx可以直接使用perl或通過ssi調用perl)
–with-perl_moles_path= 設定perl模塊路徑
–with-perl= 設定perl庫文件路徑
–http-log-path= 設定access log路徑
–http-client-body-temp-path= 設定http客戶端請求臨時文件路徑
–http-proxy-temp-path= 設定http代理臨時文件路徑
–http-fastcgi-temp-path= 設定http fastcgi臨時文件路徑
–http-uwsgi-temp-path= 設定http uwsgi臨時文件路徑
–http-scgi-temp-path= 設定http scgi臨時文件路徑
-without-http 禁用http server功能
–without-http-cache 禁用http cache功能
–with-mail 啟用POP3/IMAP4/SMTP代理模塊支持
–with-mail_ssl_mole 啟用ngx_mail_ssl_mole支持
–without-mail_pop3_mole 禁用pop3協議(POP3即郵局協議的第3個版本,它是規定個人計算機如何連接到互聯網上的郵件伺服器進行收發郵件的協議。是網際網路電子郵件的第一個離線協議標 准,POP3協議允許用戶從伺服器上把郵件存儲到本地主機上,同時根據客戶端的操作刪除或保存在郵件伺服器上的郵件。POP3協議是TCP/IP協議族中的一員,主要用於 支持使用客戶端遠程管理在伺服器上的電子郵件)
–without-mail_imap_mole 禁用imap協議(一種郵件獲取協議。它的主要作用是郵件客戶端可以通過這種協議從郵件伺服器上獲取郵件的信息,下載郵件等。IMAP協議運行在TCP/IP協議之上, 使用的埠是143。它與POP3協議的主要區別是用戶可以不用把所有的郵件全部下載,可以通過客戶端直接對伺服器上的郵件進行操作。)
–without-mail_smtp_mole 禁用smtp協議(SMTP即簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。SMTP協議屬於TCP/IP協議族,它幫助每台計算機在發送或中轉信件時找到下一個目的地。)
–with-google_perftools_mole 啟用ngx_google_perftools_mole支持(調試用,剖析程序性能瓶頸)
–with-cpp_test_mole 啟用ngx_cpp_test_mole支持
–add-mole= 啟用外部模塊支持
–with-cc= 指向C編譯器路徑
–with-cpp= 指向C預處理路徑
–with-cc-opt= 設置C編譯器參數(PCRE庫,需要指定–with-cc-opt=」-I /usr/local/include」,如果使用select()函數則需要同時增加文件描述符數量,可以通過–with-cc- opt=」-D FD_SETSIZE=2048」指定。)
–with-ld-opt= 設置連接文件參數。(PCRE庫,需要指定–with-ld-opt=」-L /usr/local/lib」。)
–with-cpu-opt= 指定編譯的CPU,可用的值為: pentium, pentiumpro, pentium3, pentium4, athlon, opteron, amd64, sparc32, sparc64, ppc64
–without-pcre 禁用pcre庫
–with-pcre 啟用pcre庫
–with-pcre= 指向pcre庫文件目錄
–with-pcre-opt= 在編譯時為pcre庫設置附加參數
–with-md5= 指向md5庫文件目錄(消息摘要演算法第五版,用以提供消息的完整性保護)
–with-md5-opt= 在編譯時為md5庫設置附加參數
–with-md5-asm 使用md5匯編源
–with-sha1= 指向sha1庫目錄(數字簽名演算法,主要用於數字簽名)
–with-sha1-opt= 在編譯時為sha1庫設置附加參數
–with-sha1-asm 使用sha1匯編源
–with-zlib= 指向zlib庫目錄
–with-zlib-opt= 在編譯時為zlib設置附加參數
–with-zlib-asm= 為指定的CPU使用zlib匯編源進行優化,CPU類型為pentium, pentiumpro
–with-libatomic 為原子內存的更新操作的實現提供一個架構
–with-libatomic= 指向libatomic_ops安裝目錄
–with-openssl= 指向openssl安裝目錄
–with-openssl-opt 在編譯時為openssl設置附加參數
–with-debug 啟用debug日誌

E. 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

F. PCRE使用時編譯錯誤

編譯提示:_memmove _strncmp這些STD函數被重定義了.

你的 pcre.lib 中包含了 libc.lib庫.
試: 打開工程配置對話框->連接器->輸入-."忽略所有默認庫",選是.看看咋樣

G. 如何在線安裝pcre

PCRE的安裝及使用
1、主頁地址:www pcre org
下載pcre-8.13 tar bz2
2、解壓縮:
tar xjpf pcre-8.13 tar bz2
3、配置:
cd pcre-8.13
./configure --prefix=/usr/local/pcre-8.13 --libdir=/usr/local/lib/pcre --includedir=/usr/local/include/pcre
configure有許多參數可配,具體參見./configure --help及手冊
4、編譯:
make
5、安裝:
make install
6、將庫文件導入cache:
方法1:在/etc/ld.so.conf中加入: /usr/local/lib/pcre,然後運行ldconfig
方法2:在/etc/ld.so.conf.d/下新生成一個文件(或在其中的文件中加入同樣內容),文件內容為:
/usr/local/lib/pcre,然後運行ldconfig
7、編譯自帶的demo程序
gcc -Wall pcredemo.c -I/usr/local/include/pcre -L/usr/local/lib/pcre -lpcre -o pcredemo
8、執行
./pcredemo -g 'cat|dog' 'the dog sat on the cat'
./pcredemo 'cat|dog' 'the cat sat on the mat'

安裝過程遇到的問題,在ubuntu 10.04下,如果直接./configure;make;make intall的話,默認安裝的目錄是/usr/local/,但是,即使用
gcc -Wall pcredemo.c -I/usr/local/include -L/usr/local/lib -lpcre -o pcredemo
編譯,執行時會出現./pcredemo: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
錯誤的原因是沒用用ldconfig載入庫文件到cache。只需按第6步將庫文件載入到cache就行

熱點內容
九九乘法編程 發布:2025-02-06 12:05:05 瀏覽:516
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:868
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:585
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:96
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:994
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:821
球頭軸編程 發布:2025-02-06 11:29:36 瀏覽:280
為什麼安卓系統不能收縮許可權 發布:2025-02-06 11:27:58 瀏覽:730
演算法4視頻 發布:2025-02-06 11:19:20 瀏覽:934
51內置音效卡需要什麼主機配置 發布:2025-02-06 11:18:33 瀏覽:838