第一步:生成扩展代码 PHP为了扩展开发的方便,提供了一个类似代码生成器的工具ext_skel,该生成器在入PHP安装目录下ext目录里边,同时PHP的所有扩展方法的源码都在该目录下。 首先我们创建一个名为sakmon的扩展:

./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扩展相关推荐

  1. arm-linux-gcc 裸机程序,Linux下ARM裸机开发-交叉工具链

    初识linux下ARM的裸机开发全过程.现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发.一般情况下我们进行的系统上的开发. ...

  2. GCC编译器简明教程(Linux下C语言开发环境的搭建)

    GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...

  3. linux下IIC驱动开发分析

    1.  IIC规范 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.IIC总线产生于在80年代,最初为音频和 ...

  4. 在UBUNTU LINUX下搭建 ANDROID开发

    菜鸟系列之一:在 UBUNTU LINUX下搭建 ANDROID开发 第一步:激活 ROOT用户.................................................... ...

  5. LibOpenCM3(一) Linux下命令行开发环境配置

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 LibOpenCM3(二) 项目模板 Makefile分析 LibOpenCM3(三) .ld文件(连接器脚本)和startup代码说 ...

  6. linux下的c开发工具,4.3.2 Linux下的C开发工具

    4.3.2  Linux下的C开发工具 Linux下的C语言程序设计与在其他环境中的C程序设计一样,主要涉及编辑器.编译链接器.调试器及项目管理工具.现在我们先对这四种工具进行简单介绍,后面会对其一一 ...

  7. 关于Linux下C语言开发基础的实验内容。

    Linux下C语言开发基础实验内容 目录 1.Linux下C语言开发流程 2.vi,vim编辑器的使用 3.Gcc编译器的使用 总体选项: 警告选项: 4.GDB 基本命令的使用 5.Make 工程管 ...

  8. 玩转USB HID系列:Linux下使用Python开发USB HID

    玩转USB系列:Linux下使用Python开发USB HID 实验环境 开发步骤 安装pyusb 库 我们来与HID设备通讯! 注意 实验环境 ubuntu 16.04 LTS 64-bit pyt ...

  9. Linux下C语言开发(信号signal处理机制)

    信号signal处理是Linux程序的一个特色,用信号处理来模拟操作系统的中断功能,对于系统程序员来说是最好的一个选择了.同样信号处理也是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概 ...

  10. 手把手教你Linux下基于ITK开发基础(1)

    手把手教你Linux下基于ITK开发基础(1) *requirement: requirement version git 2.17.1 g++ Ubuntu 7.5.0-3 ubuntu1~18.0 ...

最新文章

  1. 浅析微信支付:微信支付简单介绍(小程序、公众号、App、H5)
  2. C++ 普通函数与函数模板 区别以及调用规则01
  3. JMeter事务控制器(Transaction controller)
  4. onpagefinished等了很久才执行_互联网职业经理人的素养(二):执行力
  5. java非法字符65288,spring-boot使用内置tomcat时http请求非法字符过滤的问题
  6. 计算宝宝帐户收益(多重继承)_【067】遗漏因子、缺失数据与多重检验
  7. 主机连接wifi,如何设置虚拟机上网方式
  8. Linux下的基本操作
  9. 组态王软件自动邮件EMAIL发送
  10. 基于STM32F429,Cubemx的SAI音频播放实验
  11. 《逆袭大学:传给IT学子的正能量》
  12. pta 7-10 古风排版 (20 分)
  13. 专业物联网数据采集解决方案,专业无线传感器,专业非接触测量数据采集,非侵入式数据采集
  14. 2019XUPT_ACM 寒假训练第二期
  15. 能源管理系统助力工业企业绿色低碳发展
  16. linux获取p12证书信息,微信公众号现金红包——.p12证书linux部署如何使用
  17. 1、HotSpot And OpenJDK And OracleJDK And JER区别
  18. 央视版笑傲江湖的价值观 (转)
  19. 独家 | 合成资产平台Synthetix:鲜为人知,却身处DeFi中心
  20. 我认识的几个哈工大本科生毕业后出路

热门文章

  1. わたしたちの田村くん
  2. 【Linux】Ubuntu使用FlashFXP(FTP客户端)
  3. 搜狗公众号爬虫学习系列一公众号的biz
  4. 德育知识元素挖掘系统设计 软件工程 spring boot + Vue.js + python机器学习
  5. 计算机组成与原理名词解释,计算机组成原理名词解释与简答
  6. 证书查询系统源码,全开源可二开,自定义查询条件字段
  7. python做得好玩游戏免费
  8. 飞鱼服务器 微信,飞鱼微信客服系统软件
  9. 【智能优化算法-灰狼算法】基于非支配排序灰狼优化器(NS-GWO)算法求解多目标优化算法附matlab代码
  10. Spotlight搜索技巧