編集:私の質問の改訂
Cで外部PHPモジュールを構築する場合、共有オブジェクトをリンクするにはどうすればよいですか?
編集:私の質問の改訂
Cで外部PHPモジュールを構築する場合、共有オブジェクトをリンクするにはどうすればよいですか?
C拡張コードが共有ライブラリを使用している場合は、ファイルでそれを宣言する必要がありconfig.m4
ます。
PHPソースに含まれているスクリプトを使用して、スケルトンconfig.m4を生成することを強くお勧めします。ext_skel
./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コマンドへの優れたオンラインリファレンスは見つかりませんでした。この本は、SaraGolemonのExtendingand Embedding PHPであり、 GeorgeSchlossnagleのAdvancedPHPProgrammingの一部でもあります。
ここにSaraGolemanによるPHP拡張機能を作成するための合理的な初心者向けガイドがありますが、肉については彼女の本が本当に必要です。