php的扩展和嵌入--c扩展开发helloworld

                        php的扩展和嵌入--c扩展开发helloworld

linux下面完成了LAMP的配置环境之后,就可以进行php的扩展开发了。

 

php中的扩展开发都在源码包的/ext文件夹之下,可以看到这里已经有了很多开发好的扩展。比如与数据库相关的mysql以及xml处理的模块等等。

 

首先建立一个文件夹:

 

mkdir hello

 

在进入这个文件夹之后,先创建并打开一阜阳承兑汇票贴现

 

vim config.m4

 

这个给出一个配置问题的实例:

 

1 PHP_ARG_ENABLE(sample, whether to enable SAMPLE support,

2 [ --enable-sample Enable SAMPLE support])

3 if test "$PHP_SAMPLE" = "yes"; then

4    AC_DEFINE(SAMPLE, 1, [Whether you have SAMPLE])

5   PHP_NEW_EXTENSION(sample, sample.c, $ext_shared)

6 fi

* 这个配置文件创造了一个--enable-hello的配置选项,而PHP_ARG_ENABLE的第二个选项会在配置的时候显示出来

* PHP_ARG_ENABLE的第三个参数则是在调用./configurehelp的时候会显示出来

* 为什么有时候用enable-xxx,有时候用with-xxxenable是可以关掉的,但是with需要额外的第三方的库

* 如果说--enable-hello在配置的时候有了,那么$PHP_HELLO这个银行承兑汇票贴现就会被设为yes,那么才有接下来的操作

* PHP_NEW_EXTENSION则是要声明所有需要的源文件:PHP_NEW_EXTENSION(sample, sample.c sample2.c sample3.c, $ext_shared)

* 最后一个参数在building一个shared module的时候一般是这么些的。$ext_shared

 

下面列出在config文件中可能有的合肥承兑汇票贴现 * PHP_ARG_WITH 或者 PHP_ARG_ENABLE 指定了PHP扩展模块的工作方式,前者意味着不需要第三方库,后者正好相反;

* PHP_REQUIRE_CXX 用于指定这个扩展用到了C++

* PHP_ADD_INCLUDE 指定PHP扩展模块用到的头文件目录;

* PHP_CHECK_LIBRARY 指定PHP扩展模块PHP_ADD_LIBRARY_WITH_PATH定义以及库连接错误信息等;

* PHP_ADD_LIBRARY(stdc++,",EXTERN_NAME_LIBADD)用于将标准C++库链接进入扩展

* PHP_SUBST(EXTERN_NAME_SHARED_LIBADD) 用于说明这个扩展编译成动态链接库的形式;

* PHP_NEW_EXTENSION 用于指定有哪些源安徽承兑汇票贴现被编译,文件和文件之间用空格隔开;

接下来看头文件:php_sample.h

1  ?#ifndef PHP_SAMPLE_H

2  /* 防止两次引入 */

3  #define PHP_SAMPLE_H

4  /* 定义扩展的性质 */

5  #define PHP_SAMPLE_EXTNAME "sample"

6  #define PHP_SAMPLE_EXTVER "1.0"

7  /* 当在php的源码树之外build的时候,引入配置选项, 在使用phpize工具时,一般都是先定义的 */

8  #ifdef HAVE_CONFIG_H

9  #include "config.h"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值