しばらく前に、XP プラットフォームでいくつかの PHP 拡張ライブラリ (C/C++) をコンパイルしました。ソースを Ubuntu ボックスに移動したので、Linux ボックスで使用するライブラリをビルドしたいと考えています。
ただし、いくつかの障害に遭遇しました。
- phpize が見つからない (php5dev パッケージをインストールした後でも)
- スケルトン スクリプト/ファイルを生成するための ext_skel が見つかりません
[編集]
Pascal Martinとこの質問のおかげで、小さなライブラリの 1 つをビルドしてテストすることができました。他のライブラリに進む前に、.m4 ファイルの内容を再確認したいだけです (形式に慣れていないため)。
これは、自動生成された .m4 ファイルの内容です。この形式に精通している方であれば、その意味を説明できますか?これにより、ファイルの正しいセクションのコメントを解除したことを二重に確認できます。
config.m4 ファイルの内容は、すべての詳細で以下に表示されます。
dnl $Id$
dnl config.m4 for extension tanlib
dnl Comments in this file start with the string 'dnl'.
dnl Remove where necessary. This file will not work
dnl without editing.
dnl If your extension references something external, use with:
dnl PHP_ARG_WITH(tanlib, for tanlib support,
dnl Make sure that the comment is aligned:
dnl [ --with-tanlib Include tanlib support])
dnl Otherwise use enable:
PHP_ARG_ENABLE(tanlib, whether to enable tanlib support,
dnl Make sure that the comment is aligned:
[ --enable-tanlib Enable tanlib support])
if test "$PHP_TANLIB" != "no"; then
dnl Write more examples of tests here...
dnl # --with-tanlib -> check with-path
dnl SEARCH_PATH="/usr/local /usr" # you might want to change this
dnl SEARCH_FOR="/include/tanlib.h" # you most likely want to change this
dnl if test -r $PHP_TANLIB/$SEARCH_FOR; then # path given as parameter
dnl TANLIB_DIR=$PHP_TANLIB
dnl else # search default path list
dnl AC_MSG_CHECKING([for tanlib files in default path])
dnl for i in $SEARCH_PATH ; do
dnl if test -r $i/$SEARCH_FOR; then
dnl TANLIB_DIR=$i
dnl AC_MSG_RESULT(found in $i)
dnl fi
dnl done
dnl fi
dnl
dnl if test -z "$TANLIB_DIR"; then
dnl AC_MSG_RESULT([not found])
dnl AC_MSG_ERROR([Please reinstall the tanlib distribution])
dnl fi
dnl # --with-tanlib -> add include path
dnl PHP_ADD_INCLUDE($TANLIB_DIR/include)
dnl # --with-tanlib -> check for lib and symbol presence
dnl LIBNAME=tanlib # you may want to change this
dnl LIBSYMBOL=tanlib # you most likely want to change this
dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
dnl [
dnl PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $TANLIB_DIR/lib, TANLIB_SHARED_LIBADD)
AC_DEFINE(HAVE_TANLIBLIB,1,[ Whether you have tanlib])
dnl ],[
dnl AC_MSG_ERROR([wrong tanlib lib version or lib not found])
dnl ],[
dnl -L$TANLIB_DIR/lib -lm -ldl
dnl ])
dnl
dnl PHP_SUBST(TANLIB_SHARED_LIBADD)
PHP_NEW_EXTENSION(tanlib, tanlib.c, $ext_shared)
fi
誰かが上記を理解していますか?
ところで、上記の config.m4 ファイルは Autoconf 2.50 を使用して生成されました (私はここのドキュメントも見たばかりで、ゆっくりと消化しています。