この記事の内容は、PHP7 カーネル解析 11 のモジュール拡張機能に関するものです。必要な友達は参考にしてください。
1. このスクリプトは主に
(b).php-configを生成します: このスクリプトは主にPHPインストール情報を取得するために使用されます(c).phpize: 設定ファイルを生成するために使用されます
2. 拡張機能を記述するための基本的な手順
a. ext ディレクトリの ext_skel スクリプトを使用して拡張機能の基本フレームワークを生成します。b. config.m4 構成を変更します。コンパイル構成パラメーターを設定し、依存関係ライブラリ/関数のチェックなどを行います。 .;
./ext_skel --extname=wu
PHP_ARG_WITH(arg_name,check message,help info): 定义一个--with-feature[=arg]这样的编译参数,参数分别为 参数名、执行./configure是展示信息、执行--help时展示信息 $PHP_参数名:获取对应的参数值
PHP_ARG_ENABLE(arg_name,check message,help info): 定义一个--enable-feature[=arg]或--disable-feature参 数,--disable-feature等价于--enable-feature=no,这个宏与PHP_ARG_WITH类似,通常情况下如果配置的参数需 要额外的arg值会使用PHP_ARG_WITH,而如果不需要arg值,只用于开关配置则会使用PHP_ARG_ENABLE。
./configure时输出结果,其中error将会中断configure执行 AC_MSG_CHECKING(message) AC_MSG_RESULT(message) AC_MSG_ERROR(message)
AC_DEFINE(variable, value, [description]): 定义一个宏,比如:AC_DEFINE(IS_DEBUG, 1, []),执行autoheader 时将在头文件中(config.h)生成:#define IS_DEBUG 1。
PHP_ADD_INCLUDE(path): 添加include路径,即:gcc -Iinclude_dirc. 拡張機能を作成して実装する関数: PHP 拡張機能と PHP が提供する API に従って関数を作成します。
d を作成した後、実行します。 phpize スクリプトを使用して、configure およびその他の構成ファイルを生成します。PHP_CHECK_LIBRARY(library, function [, action-found [, action-not-found ]]): 检查依赖的库中是否存在需要 的function,action-found为存在时执行的动作,action-not-found为不存在时执行的动作
e. コンパイルとインストール: ./configure、make、make install を実行し、拡張された .so パスを php.ini に追加します。PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $XXX_DIR/$PHP_LIBDIR, XXX_SHARED_LIBADD): 添加链接库
PHP_NEW_EXTENSION(extname, sources [, shared]): 注册一个扩展,添加扩展源文件,确定此扩展是动态库还是静态库,每个扩展的config.m4中都需要通过这个宏完成扩展的编译配置。relatedの推奨事項:php7カーネル分析の10°php7カーネル分析9メモリ管理9 8つのクラスのカーネル分析
以上がPHP7 カーネル解析 11 モジュール拡張の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。