1:预定义

在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def

内容是你希望定义的函数名以及参数:

int a(int x,int y)
string b(string str,int n)
 
2:到php源码目录的ext目录
#cd /usr/local/php-5.4.0/ext/
 
执行命令,生成对应扩展目录
#./ext_skel --extname=caleng_module --proto=/home/hm/caleng_module.def

3:修改config.m4

去掉dnl的注释

PHP_ARG_ENABLE(caleng_module, whether to enable caleng_module support,
Make sure that the comment is aligned:
[  --enable-caleng_module           Enable caleng_module support])

4:修改caleng_module.c

/* {{{ proto int a(int x, int y)
    */
PHP_FUNCTION(a)
{
    int argc = ZEND_NUM_ARGS();
    int x;
    int y;
    int z;
    if (zend_parse_parameters(argc TSRMLS_CC, "ll", &x, &y) == FAILURE)
         
        return;
z=x+y;
        RETURN_LONG(z);
}
/* }}} */
/* {{{ proto string b(string str, int n)
    */
PHP_FUNCTION(b)
{
    char *str = NULL;
    int argc = ZEND_NUM_ARGS();
    int str_len;
    long n;
    char *result;
    char *ptr;
    int result_length;
  
    if (zend_parse_parameters(argc TSRMLS_CC, "sl", &str, &str_len, &n) == FAILURE)
        return;
    result_length = str_len * n;
    result = (char *) emalloc(result_length + 1);
    ptr = result;
    while (n--) {
        memcpy(ptr, str, str_len);
        ptr += str_len;
    }
    *ptr = '\0';
    RETURN_STRINGL(result, result_length, 0);
}
/* }}} */

5:生成扩展库

#cd ./caleng_module
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make
#make install

6:到php的对应extensions目录

如上图所示

#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/

改目录下有生成的caleng_module.so文件

7:修改php.ini

php.ini如果找不到可以从phpinfo()打出的信息看到

#cd /usr/local/php/lib/

php.ini增加扩展信息

extension=caleng_module.so

8:重启Apache

# /usr/local/apache2/bin/apachectl restart

9:检查加载

/usr/local/php/bin/php -m

10:PHP调用

echo a(1,2);

输出 3  就说明成功了!

 

http://www.cnblogs.com/zfying/archive/2012/07/31/2616402.html

转载于:https://www.cnblogs.com/andhm/archive/2012/08/10/2631923.html

用C语言写PHP扩展 linux相关推荐

  1. 用C语言写PHP扩展

     用C语言写PHP扩展 1:预定义 在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def 内容是你希望定义的函数名以及参数: int a(int x,int y) s ...

  2. c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...

    求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...

  3. php c扩展的方式,php中使用C语言写扩展的方法

    php中使用C语言写扩展的方法 发布时间:2020-08-20 15:49:21 来源:亿速云 阅读:102 作者:小新 小编给大家分享一下php中使用C语言写扩展的方法,相信大部分人都还不怎么了解, ...

  4. 在Linux中如何运行C语言写的脚本

    目录 1:Linux下如何运行C语言脚本 2:实例展示 1:Linux下如何运行C语言脚本 Linux别的系统我不知道是不是这个方法,我是用的ubuntu的,其他的我也没测试过,但是ubuntu应该是 ...

  5. python是c语言写的_python使用C语言写扩展示例

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 本文介绍如何用 C 语言来扩展 python.所举的例子是,为 python 添加一个设置字符串到 ...

  6. 除了 Python ,这些语言写的机器学习项目也很牛(二)

    2019独角兽企业重金招聘Python工程师标准>>> Python 由于本身的易用优势和强大的工具库储备,成为了在人工智能及其它相关科学领域中最常用的语言之一.尤其是在机器学习,已 ...

  7. 如何用C语言编写PHP扩展的详解

    来源:http://www.jb51.net/article/38381.htm 本篇文章是对用C语言编写PHP扩展进行了详细的分析介绍,需要的朋友参考下 1:预定义 在home目录,也可以其他任意目 ...

  8. 除了 Python ,这些语言写的机器学习项目也很牛

    全世界只有3.14 % 的人关注了 数据与算法之美 Python 由于本身的易用优势和强大的工具库储备,成为了在人工智能及其它相关科学领域中最常用的语言之一.尤其是在机器学习,已然是各大项目最偏爱的语 ...

  9. 用PHP写PHP扩展-Another way writing php extensions

    前言 目前写PHP扩展主要有三种方法: C语言 C++ php-cpp Zephir Zephir 其中Zephir其实也是先翻译成C语言,然后再编译成扩展的.用Zephir 编写的Phalcon,就 ...

最新文章

  1. 你的 mixin 兼容 ECMAScript 5 吗?
  2. docker安装、源、网络
  3. 查看linux是否lvm分区,linux LVM分区查看dm设备
  4. csdn图片排版技巧
  5. 递归法 最大公倍数 斐波那契数列 数组插入排序改递归
  6. 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
  7. SQL Server中的MD5实现方法
  8. 全球信息数据量陡增 大数据应用前景广阔
  9. kafka windows单机安装测试
  10. 怎么让composer加速
  11. Spring-cloud学习教程视频
  12. Unity Alpha Blend混合的最终解释
  13. Twaver-HTML5基础学习(3)基本数据元素(Data)其他功能函数以及组Group
  14. Java_实现身份证信息提取个人信息
  15. 阿里云服务器ecs从购买到上传网站详细教程
  16. C++封装dll供C#调用获取U盘/磁盘序列号信息
  17. 用Johnson-Trotter算法生成排列!
  18. 用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)
  19. 指数、对数以及根式的运算【初级中阶辅导】
  20. 继域名解析后------------我的网页进不去了!!!(修复方法)

热门文章

  1. 计算机应用基础教程2015答案,《计算机应用基础教程(2015版)》_课后题答案.doc
  2. Linux笔记-centos7配置网卡及iftop的使用
  3. Java笔记-使用BindingResult把表单错误传出来
  4. QML与C++混合编程详解
  5. 多路查找树之2-3树(理论)
  6. 5.6m元多项式的表示
  7. js符号输入不可用_JS 控制非法字符的输入代码
  8. java怎么一段字符串全为数字_java 如何判断一个字符串是数字
  9. php 调用带返回多个结果集的方法,PHP中有多个结果集?
  10. python列表修改元素_如何在Python中替换多维列表的第n个元素?