原文 : http://kimi.it/496.html

系统环境 : Ubuntu

目标 : 可以像 php 提供的内部函数一样,使用 myecho 函数 :

输出如下 :

1. 获取 php 的源码 : http://php.net/downloads.php  ,  选择一个适合的版本 ,比如 : php-7.0.2.tar.gz.

2.  解压 : tar xvf php-7.0.2.tar.gz -C install-dir 

3.  切换到 install-dir / ext 目录下,新建文件 myphpext.skel ,编辑内容如下,保存退出:

 

4. install-dir / ext 目录下,执行:

 

5. 切换到 install-dir / ext / myphpext 目录下 ,编辑 config.m4 文件,搜索 PHP_ ARG_WITH :

原来的内容:

修改后:

6.  install-dir / ext / myphpext 目录下,编辑 php_myphpext.php ,增加 PHP_FUNCTION(myecho)  :

6. 编辑 myphpext.c 文件,修改 PHP_FUNCTION(myecho) 的内容为如下:

7.  install-dir / ext / myphpext 目录下,运行 phpize , 生成 configure 等相关的配置文件:

8. install-dir / ext / myphpext 目录下,运行 ./configure  --with-php-config=/usr/bin/php-config  ,生成 MakeFILE 等文件 :

9 .install-dir / ext / myphpext 目录下 , 运行 make,进入编译阶段 :

10. 如果没出错的话,在 install-dir / ext / myphpext / modules 目录下,生成了 myphpext.so 文件.

11. 本机的 php 的 extension_dir 和 php.ini 的目录如下:

拷贝 myphpext.so 文件到 /user / lib / php / 20151012 目录下,编辑 php.ini 文件, 加入 extension=myphpext.so  语句.

php 学习编译扩展的更多相关文章

  1. geoserver源码学习与扩展——跨域访问配置

    在 geoserver源码学习与扩展——restAPI访问 博客中提到了geoserver的跨域参数设置,本文详细讲一下geoserver的跨域访问配置. geoserver的跨域访问依赖java-p ...

  2. asp.net学习之扩展GridView

    原文:asp.net学习之扩展GridView 本节讨论如何从现有的控件,进而扩展成强大的,更定制的GridView控件 1.扩展BoundField 默认的BoundField不能显示多文本,文字一 ...

  3. 继《在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib》修订

    在之前的<在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib>中有些问题,后来由于时间不是很充足,故现在对其中的问题进行完善,如下所示对红色框框中的相应的 ...

  4. Nginx1.8.1 编译扩展https

    nginx无缝编译扩展https 本贴只限用于通过编译安装的nginx,如果用的是yum源安装请卸载后参见 http://www.cnblogs.com/rslai/p/7851220.html 安装 ...

  5. iOS学习系列 - 扩展机制category与associative

    iOS学习系列 - 扩展机制category与associative category与associative作为objective-c的扩展机制的两个特性,category即类型,可以通过它来扩展方 ...

  6. 深度学习编译与优化Deep Learning Compiler and Optimizer

    深度学习编译与优化Deep Learning Compiler and Optimizer

  7. 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib

    为什么要CMake,这里我陈述自己的想法,作为一个刚使用opencv库的小白来说,有以下大概三点内容 1.由于在学习图像处理滤波器中,需要用到各种边缘保护滤波器(EPS)算法,但是这些算法在OpenC ...

  8. JVM学习——编译OpenJDK

    最近在学习<深入理解java虚拟机 第二版>这本书.书中第一部分建议大家自己编译OpenJDK.抱着学习态度也来编译个玩一玩.下面进入正题. 1.编译环境介绍 操作系统 CentOS Li ...

  9. MSBuild编译扩展

    新增一个C#工程,用记事本打开工程文件(.csproj结尾),滚动条拉到最后,大家可以看到一段如下的代码,其中<Target Name="BeforeBuild">和& ...

随机推荐

  1. IO流——File类(文件流类)

    java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...

  2. linux 操作系统级别监控 iostat 命令

    iostat命令可以查看当前机器磁盘io的数据 命令:iostat -x -k 1 -x:展示磁盘的扩展信息 -k:以k为单位展示磁盘数据 1:每1秒刷新一次 展示结果 util:磁盘IO使用率,单位 ...

  3. Java中创建对象的5种方法

    将会列举5种方法去创建 Java 对象,以及他们如何与构造函数交互,并且会有介绍如何去使用这些方法的示例. 作为一个 Java 开发人员,我们每天都会创建大量的 Java 对象,但是我们通常会使用依赖 ...

  4. 代码审计之CSRF原理及修复

    在平时的测试中,csrf也是比较容易发现的,主要就是看它对一个操作,有没有检测其时效性(这样表述可能不太准确),一般的防护方法就是添加token来进行校验,并及时对其进行失效处理. 以下所有代码都是我 ...

  5. java架构之路-(分布式zookeeper)zookeeper集群配置和选举机制详解

    上次博客我们说了一下zookeeper的配置文件,以及命令的使用https://www.cnblogs.com/cxiaocai/p/11597465.html.我们这次来说一下我们的zookeepe ...

  6. .NET Core应用的三种部署方式

    .NET Core应用提供了三种部署方式: FDD FDD:Framework-dependent deployment,框架依赖部署.这种方式针对某个特定版本的.NET Core进行发布,只打包应用 ...

  7. Java Map知识点

    1.遍历 java遍历Map的方式有多种,一下以代码示例来说明使用: Map<String, String> tmap = new HashMap<String, String> ...

  8. LeetCode 题解汇总

    前言 现如今,对于技术人员(软开.算法等)求职过程中笔试都是必不可少的(免笔试的除外,大部分人都需要笔试),而笔试一般组成都是选择.填空.简答题.编程题(这部分很重要),所以刷题是必不可少的:对于应届 ...

  9. zui框架配置日期控件只显示年月

    zui框架配置日期控件datetimepicker只显示年月 <!DOCTYPE html> <head> <script src="~/Scripts/jqu ...

  10. Scala和Java混合项目搭建:(Eclipse)

     Scala和Java混合项目搭建:(Eclipse)  项目结构: pom.xml: <project xmlns="http://maven.apache.org/POM/4.0. ...