php 源碼編譯 不加載擴展獨立的PHP擴展可以獨立于PHP源碼之外進行分發(fā)?源碼編譯安裝php
2021-12-02
獨立的 PHP 擴展可以獨立于 PHP 源代碼進行分發(fā)。要創(chuàng)建這樣的擴展,需要準備兩件事:
接下來我們將描述如何創(chuàng)建這些文件并將它們組合起來。
準備系統(tǒng)工具
如果想讓擴展在系統(tǒng)上編譯運行成功,需要準備以下工具:
以上都可以從ftp:///pub/gnu/獲得。
注意:這些都是只能在類 Unix 環(huán)境中使用的工具。
改造現(xiàn)有的擴展
為了表明創(chuàng)建獨立擴展很容易,我們先將PHP 中嵌入的擴展更改為獨立擴展。安裝PHP并執(zhí)行以下命令:
$ /tmp/
$ cd /tmp/
現(xiàn)在你有一個空目錄。我們將復制擴展目錄中的文件:
$ cp -rp php-4.0.X/ext//*.
#注:看來這篇文章真的需要更新了
# 擴展部分已在 PHP7 中移除
至此,擴展完成,執(zhí)行:
$
現(xiàn)在你可以在任何地方獨立存儲這個目錄中的文件,并且這個擴展可以完全獨立存在。
用戶在編譯時需要使用以下命令:
$ ./
[--with-php-=/path/to/php-]
[--with-=-DIR]
$ make
這樣,模塊就可以使用內(nèi)置的客戶端庫或安裝在目錄中的。
注意:這意味著如果你想寫一個PHP擴展,你需要已經(jīng)安裝了PHP,并且還需要下載一份PHP源代碼。
定義一個新的擴展
我們將示例擴展命名為“”。
新擴展包含兩個資源文件:foo.c 和 bar.c(有一些頭文件,但這些不僅重要)。
示例擴展不引用任何外部庫(這一點非常重要,因為用戶不需要指定一些編譯選項)。
該選項用于指定資源文件的名稱,可以擁有任意數(shù)量的資源文件。
注:以上是.in文件中的配置選項,可以參考。
修改m4后綴的配置文件
m4 配置文件可以指定一些額外的檢查。對于一個獨立的分機,你只需要做一些宏調(diào)用。
(, 到,
[--- ])
如果測試 "$" != "no"; 然后
(, foo.c bar.c, $)
菲
自動設置正確的變量以確保擴展可以在共享模式下啟動。
第一個參數(shù)是擴展名,第二個參數(shù)是資源文件。第三個參數(shù) $ 由 /WITH 設置。
請始終使用或設置。即使您不打算發(fā)布您的 PHP 模塊php 源碼編譯 不加載擴展,這些設置也可以確保您的模塊和 PHP 主模塊界面保持集成。
注意:and 應該用于定義模塊是動態(tài)擴展還是靜態(tài)編譯成PHP,就像編譯PHP時使用的---xxx和--with-xxx一樣。
創(chuàng)建資源文件
您可以為 PHP 模塊創(chuàng)建一些通用代碼,也可以編寫一些基本的函數(shù)定義和 C 代碼來處理函數(shù)參數(shù)。具體信息可以查看..
不要擔心沒有例子。PHP 中有很多模塊供您參考。選擇一個簡單的點開始并添加您自己的代碼。
注意:基礎模塊所需的資源文件和配置文件可以自行生成,不需要自己創(chuàng)建。
修改自定義模塊
將.m4文件和資源文件放在同一目錄下,然后執(zhí)行(編譯PHP時安裝PHP4.0及以上)。
如果你的不在系統(tǒng)環(huán)境變量中,則需要指定絕對路徑微信公眾號開發(fā),例如:
$ /php/bin/
此命令會自動將必要的構(gòu)建文件復制到當前目錄并創(chuàng)建基于 .m4 的配置文件。
通過以上步驟,你就擁有了一個獨立的分機。
安裝擴展
可以使用以下命令編譯和安裝擴展:
$ ./
[--with-php-=/path/to/php-]
$ make
為模塊添加共享支持
有時獨立的擴展需要被其他模塊共享和加載。接下來,我將解釋如何為已經(jīng)創(chuàng)建的 foo 模塊添加共享支持。
在.m4文件中,使用/設置擴展名,這樣就可以自動使用 --with-foo=[,..] 或 ---foo=[,..] 等指令作為編譯參數(shù)。
在 .m4 文件中,使用 (foo,.., $) 啟用要構(gòu)建的擴展。
將以下代碼添加到您的 C 語言資源文件中:
#
(富)
#
我在本段中已經(jīng)提到了上述所有內(nèi)容,但我再次強調(diào)一下。
PECL網(wǎng)站公約
如果您計劃將您的擴展發(fā)布到 PECL 的網(wǎng)站,您需要考慮以下幾點:
添加 或 到 .xml
版本信息需要在擴展頭文件中定義,會調(diào)用這個宏來聲明擴展版本:
# "1.2.3"
【編輯推薦】
PHP7 發(fā)布推遲待定。PHP7 正式版將作為開源發(fā)布。放棄PHPphp 源碼編譯 不加載擴展,轉(zhuǎn)向PHP7發(fā)布時編寫的配置和使用教程。15 個有用的 PHP 正則表達式 如何編寫高性能代碼?
【主編:電話:(010)】