用C语言写PHP扩展 linux
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相关推荐
- 用C语言写PHP扩展
用C语言写PHP扩展 1:预定义 在home目录,也可以其他任意目录,写一个文件,例如caleng_module.def 内容是你希望定义的函数名以及参数: int a(int x,int y) s ...
- c语言中怎么暂停一个一个游戏,求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束...
求助:最近在linux下用c语言写了一个贪吃蛇程序,有几个问题,第一:贪吃蛇怎么实现暂停,第二:有时候同时输入上下左右中的两个键就会直接游戏结束 /* 以下是主要的逻辑代码,还有些.c和.h就没发了 ...
- php c扩展的方式,php中使用C语言写扩展的方法
php中使用C语言写扩展的方法 发布时间:2020-08-20 15:49:21 来源:亿速云 阅读:102 作者:小新 小编给大家分享一下php中使用C语言写扩展的方法,相信大部分人都还不怎么了解, ...
- 在Linux中如何运行C语言写的脚本
目录 1:Linux下如何运行C语言脚本 2:实例展示 1:Linux下如何运行C语言脚本 Linux别的系统我不知道是不是这个方法,我是用的ubuntu的,其他的我也没测试过,但是ubuntu应该是 ...
- python是c语言写的_python使用C语言写扩展示例
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 本文介绍如何用 C 语言来扩展 python.所举的例子是,为 python 添加一个设置字符串到 ...
- 除了 Python ,这些语言写的机器学习项目也很牛(二)
2019独角兽企业重金招聘Python工程师标准>>> Python 由于本身的易用优势和强大的工具库储备,成为了在人工智能及其它相关科学领域中最常用的语言之一.尤其是在机器学习,已 ...
- 如何用C语言编写PHP扩展的详解
来源:http://www.jb51.net/article/38381.htm 本篇文章是对用C语言编写PHP扩展进行了详细的分析介绍,需要的朋友参考下 1:预定义 在home目录,也可以其他任意目 ...
- 除了 Python ,这些语言写的机器学习项目也很牛
全世界只有3.14 % 的人关注了 数据与算法之美 Python 由于本身的易用优势和强大的工具库储备,成为了在人工智能及其它相关科学领域中最常用的语言之一.尤其是在机器学习,已然是各大项目最偏爱的语 ...
- 用PHP写PHP扩展-Another way writing php extensions
前言 目前写PHP扩展主要有三种方法: C语言 C++ php-cpp Zephir Zephir 其中Zephir其实也是先翻译成C语言,然后再编译成扩展的.用Zephir 编写的Phalcon,就 ...
最新文章
- 你的 mixin 兼容 ECMAScript 5 吗?
- docker安装、源、网络
- 查看linux是否lvm分区,linux LVM分区查看dm设备
- csdn图片排版技巧
- 递归法 最大公倍数 斐波那契数列 数组插入排序改递归
- 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
- SQL Server中的MD5实现方法
- 全球信息数据量陡增 大数据应用前景广阔
- kafka windows单机安装测试
- 怎么让composer加速
- Spring-cloud学习教程视频
- Unity Alpha Blend混合的最终解释
- Twaver-HTML5基础学习(3)基本数据元素(Data)其他功能函数以及组Group
- Java_实现身份证信息提取个人信息
- 阿里云服务器ecs从购买到上传网站详细教程
- C++封装dll供C#调用获取U盘/磁盘序列号信息
- 用Johnson-Trotter算法生成排列!
- 用python实现csdn博主全部博文下载,html转pdf,有了学习的电子书了。。。(附源码)
- 指数、对数以及根式的运算【初级中阶辅导】
- 继域名解析后------------我的网页进不去了!!!(修复方法)
热门文章
- 计算机应用基础教程2015答案,《计算机应用基础教程(2015版)》_课后题答案.doc
- Linux笔记-centos7配置网卡及iftop的使用
- Java笔记-使用BindingResult把表单错误传出来
- QML与C++混合编程详解
- 多路查找树之2-3树(理论)
- 5.6m元多项式的表示
- js符号输入不可用_JS 控制非法字符的输入代码
- java怎么一段字符串全为数字_java 如何判断一个字符串是数字
- php 调用带返回多个结果集的方法,PHP中有多个结果集?
- python列表修改元素_如何在Python中替换多维列表的第n个元素?