C で書かれた PHP 拡張機能のリンク
-
19-09-2019 - |
質問
編集:私の質問を修正する
C で外部 PHP モジュールを構築する場合、共有オブジェクトをリンクするにはどうすればよいですか?
解決
C 拡張コードで共有ライブラリを使用する場合は、それを config.m4
ファイル。
私 強く の使用をお勧めします ext_skel
PHP ソースに含まれるスクリプトを使用して、スケルトン config.m4 を生成します。
./ext_skel --extname=myextension
ライブラリにリンクしているので、慣例により、 --with-myextension
オプション(ではなく、 --enable-myextension
)。config.m4 内の関連する行のコメントを解除し、ライブラリの詳細を入力します。
次のようなものです。
# --with-myextension -> check for lib and symbol presence
LIBNAME=the_lib_your_extension_needs # you may want to change this
LIBSYMBOL=some_symbol_in_the_lib_you_extension_needs # you most likely want to change this
PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
[
PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $MYEXTENSION_DIR/lib, MYEXTENSION_SHARED_LIBADD)
AC_DEFINE(HAVE_MYEXTENSIONLIB,1,[ ])
],[
AC_MSG_ERROR([wrong $LIBNAME lib version or lib not found])
],[
-L$MYEXTENSION_DIR/lib -ldl
])
次に、それをビルドするには、次を実行します。
phpize
./configure --with-myextension
make
最後に、モジュールをコピーする必要があります (または ln -s
) をシステムが予期する場所に保存します。
それがすべてうまくいった場合は、 php -m
モジュールをリストに含める必要があります。
残念ながら、PHP の config.m4 コマンドに関する適切なオンライン リファレンスを見つけたことがありません。これに関する書籍は次のとおりです。 Sara Golemon の PHP の拡張と埋め込み そしてその一部も George Schlossnagle の高度な PHP プログラミング.
Sara Goleman による、PHP 拡張機能を作成するための合理的な初心者ガイドがあります。 ここ, 、しかし、肉のためには彼女の本が本当に必要です。
所属していません StackOverflow