在php擴充套件開發中如何使用pkg config

2021-09-23 21:37:39 字數 1680 閱讀 2775

首先科普下pkg-config能幹啥。下面是維基百科對pkg-config的說明:

pkg-config 是乙個提供從源**中編譯軟體時查詢已安裝的庫時使用的統一介面的計算機軟體。pkg-config原本是設計用於linux的,但現在在各個版本的bsd、windows、mac os x和solaris上都有著可用的版本。

簡單的說,pkg-config主要提供如下幾個功能:

1、檢查庫的版本號。如果所需要的庫的版本不滿足要求,它會列印出錯誤資訊,避免鏈結錯誤版本的庫檔案。

2、獲得編譯預處理引數,如巨集定義,標頭檔案的位置。

3、獲得鏈結引數,如庫及依賴的其它庫的位置,檔名及其它一些連線引數。

4、自動加入所依賴的其它庫的設定。

最近開發乙個用於裁剪的php擴充套件用到了opencv。opencv需要載入的so庫很多,手動加入到config.m4中,太麻煩,而且也不利用後期維護。幸好opencv提供了opencv.pc檔案,這樣就可以使用pkg-config自動獲取編譯的引數。

下面是我在config.m4中寫的自動載入opencv相關so庫和標頭檔案的**。

dnl # --with-tclip -> check with-path

search_path="/usr/lib/pkgconfig" # 定義pkgconfig檔案,即副檔名pc檔案存放路徑

search_for="opencv.pc" # 要尋找的檔案

if test -r $php_tclip/$search_for; then #

tclip_dir=$php_tclip

else # search default path list

ac_msg_checking([for tclip files in default path])

for i in $search_path ; do

if test -r $i/$search_for; then

tclip_dir=$i

ac_msg_result(found in $i)

fidone

fidnl

if test -z "$tclip_dir"; then

ac_msg_result([not found])

ac_msg_error([please reinstall the tclip distribution])

fiopencv_flags="`pkg-config opencv --libs --cflags opencv`"

for i in $opencv_flags;do

if test $ = "-i" ;then

php_add_include($)

elif test $-3} = ".so" ;then

dir_name=`dirname $i`

file_name=$

file_name=$

file_name=$

php_add_library_with_path($file_name,$dir_name,tclip_shared_libadd)

fidone

注意:if的條件部分請不要用大括號的方式,否則m4生成的makefile檔案中會有語法錯誤。

參考文件

《理解 pkg-config 工具》

《與 unix 構建系統互動: config.m4》

php擴充套件開發

php擴充套件 pecl 跟php引擎一樣都是使用c語言開發。php核心開發組成員鳥哥laruence使用的是vim進行php開發。書籍 案例 php src ext pecl開發郵件組 盡量編寫一些phpt測試用例,php src tests下有很多參考.測試時用 enable debug編譯ph...

php擴充套件開發

二 php擴充套件開發 擴充套件開發流程 生成開發骨架 修改config.m4 編碼 編譯擴充套件為so 修改php.ini 1.生成開發骨架 1.1 進入擴充套件目錄 cd php 7.0.1 ext 1.2 用.ext skel生成骨架 ext skel extname module 1.3 修...

PHP擴充套件開發

php function say hello len spprintf strg,0,hello s n arg return stringl strg,len,0 1.引數接收 這裡接收函式的引數需要通過zend parse parameter函式解析,第乙個引數指定使用者傳入say hello函...