Joh*_*ter 12
如果您的C扩展代码使用共享库,则需要在config.m4文件中声明它.
我强烈建议使用ext_skelPHP源代码中包含的脚本来生成框架config.m4:
./ext_skel --extname=myextension
由于您要链接到库,按照惯例,您应该使用--with-myextension选项(而不是--enable-myextension).取消注释config.m4中的相关行并填写lib的详细信息.
类似于以下内容:
# --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
])
Run Code Online (Sandbox Code Playgroud)
然后构建它,运行:
phpize
./configure --with-myextension
make
Run Code Online (Sandbox Code Playgroud)
最后,您需要将模块(或ln -s)复制到系统期望找到它的位置.
如果一切正常,php -m则应将您的模块包含在列表中.
不幸的是,我从来没有找到一个很好的在线参考PHP的config.m4命令 - 这本书是Sara Golemon的扩展和嵌入PHP以及George Schlossnagle的高级PHP编程的一部分.
有一个合理的新手引导创建由萨拉·戈尔曼PHP扩展在这里,但肉,你真的需要她的书.
| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |