• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

[php-src]Php扩展的多文件编译

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

内容均以php5.6.14为例.

 

假设有模块 foo,php_foo.h 和 foo.c 是固有文件,额外的C文件如果要加入编译,大致有五步。

 

1. 新增头文件 foo_bar.h

#ifndef FOO_BAR_H
#define FOO_BAR_H

extern zend_class_entry *foo_bar_ce;

#endif

 

2. 新增主文件 foo_bar.c,里面的两个头文件要加.

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "php.h"
#include "php_foo.h"  // #1.
#include "foo_bar.h"  // #2.

zend_class_entry *foo_bar_ce;

zend_function_entry foo_bar_methods[] = { 
    {NULL, NULL, NULL}
};

FOO_STARTUP_FUNCTION(bar) {
    zend_class_entry ce; 

    /* init class entry */
    INIT_CLASS_ENTRY(ce, "Foo_Bar", foo_bar_methods);

    /* register */
    foo_bar_ce = zend_register_internal_class(&ce TSRMLS_CC);

    /* flags */

    return SUCCESS;
}

 

3. 头文件 php_foo.h 新定义宏

#define FOO_STARTUP_FUNCTION(module)    ZEND_MINIT_FUNCTION(foo_##module)
#define FOO_STARTUP(module)             ZEND_MODULE_STARTUP_N(foo_##module)(INIT_FUNC_ARGS_PASSTHRU)
#define FOO_SHUTDOWN_FUNCTION(module)   ZEND_MSHUTDOWN_FUNCTION(foo_##module)
#define FOO_SHUTDOWN(module)            ZEND_MODULE_SHUTDOWN_N(foo_##module)(SHUTDOWN_FUNC_ARGS_PASSTHRU)

 

4. 主文件 foo.c 中引入新增的头文件,并在 MINIT 阶段启动新增模块

#include "php_foo.h"
#include "foo_bar.h"  // #1.
/* startup component */
FOO_STARTUP(conf);    // #2.

 

5. config.m4 增加新的C文件

PHP_NEW_EXTENSION(foo, 
    foo.c                         \
    foo_bar.c                     \
    , $ext_shared)

 

这最后要注意的也是最重要的,由于更改了m4文件,须重新执行从 phpize 开始的安装步骤使之生效。

不然你将得到一个错误 php: symbol lookup error.

 

Refer:PHP扩展多文件编译

Link: http://www.cnblogs.com/farwish/p/5696878.html


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
***PHP各种编码的汉字字符串截取发布时间:2022-07-10
下一篇:
URL重写是实现PHP伪静态发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap