質問

編集:私の質問を修正する

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 拡張機能を作成するための合理的な初心者ガイドがあります。 ここ, 、しかし、肉のためには彼女の本が本当に必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top