LINUX下PHP扩展开发:第一个C扩展
./ext_skel --extname=sakmon --proto=sakmon.skel
第二步:修改配置 进入sakmon目录,修改cnfig.m4文件将10、11、12三行最前面的dnl删除掉,就是将
dnl PHP_ARG_WITH(sakmon, for sakmon support,dnl Make sure that the comment is aligned:dnl [ --with-sakmon Include sakmon support])
修改为
PHP_ARG_WITH(sakmon, for sakmon support,Make sure that the comment is aligned:[ --with-sakmon Include sakmon support])
第三步:功能实现 修改源码sakmon.c文件,添加hello_world方法,找到
const zend_function_entry sakmon_functions[] = {PHP_FE(confirm_sakmon_compiled, NULL) /* For testing, remove later. */PHP_FE_END /* Must be the last line in sakmon_functions[] */
};
修改为
const zend_function_entry sakmon_functions[] = {PHP_FE(confirm_sakmon_compiled, NULL) /* For testing, remove later. */PHP_FE(hello_world, NULL) /* 新添加的方法 */PHP_FE_END /* Must be the last line in sakmon_functions[] */
};
在文件底部增加hello_world函数
PHP_FUNCTION(hello_world)
{RETURN_STRING("HELLO WORLD!",1);
}
修改php_sakmon.h文件,找到
PHP_FUNCTION(confirm_sakmon_compiled); /* For testing, remove later. */
添加hello_world方法,修改之后为
PHP_FUNCTION(confirm_sakmon_compiled); /* For testing, remove later. */PHP_FUNCTION(hello_world); /* 新添加的方法 */
第四步:编译扩展 保存修改内容后,开始编译扩展。
/usr/local/php-5.4.30/bin/phpize
./configure --with-php-config=/usr/local/php-5.4.30/bin/php-config
make
第五步,添加扩展 这时候,一切顺利的话,该扩展已经在modules/sakmon.so这个位置了。下面就是将这个扩展加入到PHP中去,让我们PHP程序可以调用到。
cp modules/sakmon.so /usr/local/php-5.4.30/ext/
vi /usr/local/php-5.4.30/etc/php.ini
extension=/usr/local/php-5.4.30/ext/sakmon.so #在php.ini文件最后增加这一行
重启PHP服务,接下来我开始测试在文件中调用hello_world()方法:
echo hello_wolrd();
运行一切正常,输出如图所示: PS: 不建议在WINDOWS环境下开发PHP扩展,太揪心了。
转载于:https://my.oschina.net/sakmon/blog/393935
LINUX下PHP扩展开发:第一个C扩展相关推荐
- arm-linux-gcc 裸机程序,Linux下ARM裸机开发-交叉工具链
初识linux下ARM的裸机开发全过程.现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发.一般情况下我们进行的系统上的开发. ...
- GCC编译器简明教程(Linux下C语言开发环境的搭建)
GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...
- linux下IIC驱动开发分析
1. IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...
- 在UBUNTU LINUX下搭建 ANDROID开发
菜鸟系列之一:在 UBUNTU LINUX下搭建 ANDROID开发 第一步:激活 ROOT用户.................................................... ...
- LibOpenCM3(一) Linux下命令行开发环境配置
目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...
- linux下的c开发工具,4.3.2 Linux下的C开发工具
4.3.2 Linux下的C开发工具 Linux下的C语言程序设计与在其他环境中的C程序设计一样,主要涉及编辑器.编译链接器.调试器及项目管理工具.现在我们先对这四种工具进行简单介绍,后面会对其一一 ...
- 关于Linux下C语言开发基础的实验内容。
Linux下C语言开发基础实验内容 目录 1.Linux下C语言开发流程 2.vi,vim编辑器的使用 3.Gcc编译器的使用 总体选项: 警告选项: 4.GDB 基本命令的使用 5.Make 工程管 ...
- 玩转USB HID系列:Linux下使用Python开发USB HID
玩转USB系列:Linux下使用Python开发USB HID 实验环境 开发步骤 安装pyusb 库 我们来与HID设备通讯! 注意 实验环境 ubuntu 16.04 LTS 64-bit pyt ...
- Linux下C语言开发(信号signal处理机制)
信号signal处理是Linux程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了.同样信号处理也是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概 ...
- 手把手教你Linux下基于ITK开发基础(1)
手把手教你Linux下基于ITK开发基础(1) *requirement: requirement version git 2.17.1 g++ Ubuntu 7.5.0-3 ubuntu1~18.0 ...
最新文章
- 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)
- C++ 普通函数与函数模板 区别以及调用规则01
- JMeter事务控制器(Transaction controller)
- onpagefinished等了很久才执行_互联网职业经理人的素养(二):执行力
- java非法字符65288,spring-boot使用内置tomcat时http请求非法字符过滤的问题
- 计算宝宝帐户收益(多重继承)_【067】遗漏因子、缺失数据与多重检验
- 主机连接wifi,如何设置虚拟机上网方式
- Linux下的基本操作
- 组态王软件自动邮件EMAIL发送
- 基于STM32F429,Cubemx的SAI音频播放实验
- 《逆袭大学:传给IT学子的正能量》
- pta 7-10 古风排版 (20 分)
- 专业物联网数据采集解决方案,专业无线传感器,专业非接触测量数据采集,非侵入式数据采集
- 2019XUPT_ACM 寒假训练第二期
- 能源管理系统助力工业企业绿色低碳发展
- linux获取p12证书信息,微信公众号现金红包——.p12证书linux部署如何使用
- 1、HotSpot And OpenJDK And OracleJDK And JER区别
- 央视版笑傲江湖的价值观 (转)
- 独家 | 合成资产平台Synthetix:鲜为人知,却身处DeFi中心
- 我认识的几个哈工大本科生毕业后出路
热门文章
- わたしたちの田村くん
- 【Linux】Ubuntu使用FlashFXP(FTP客户端)
- 搜狗公众号爬虫学习系列一公众号的biz
- 德育知识元素挖掘系统设计 软件工程 spring boot + Vue.js + python机器学习
- 计算机组成与原理名词解释,计算机组成原理名词解释与简答
- 证书查询系统源码,全开源可二开,自定义查询条件字段
- python做得好玩游戏免费
- 飞鱼服务器 微信,飞鱼微信客服系统软件
- 【智能优化算法-灰狼算法】基于非支配排序灰狼优化器(NS-GWO)算法求解多目标优化算法附matlab代码
- Spotlight搜索技巧