Linux下C++实现PHP扩展中级应用(一)
此篇文章准备分2个部分来讲述:
第一部分主要详细讲述一下怎么构建一个完成的C++应用扩展模块;
第二部分主要讲述在PHP及Zend框架下怎么使用Zend API和C++语言来实现自己所要的功能以及项目的开发;
此篇文章所运用的环境在Linux
2.4.21-4.ELsmp(Red Hat Linux 3.2.3-20),Apache/2.2.8,gcc version 3.2.3
20030502,PHP 5.2.5 (cli),Zend Engine v2.2.0下进行。
一、前言
以前写过一些使用C语言来扩展PHP的应用[1
]
。在淘宝使用C++做PHP的扩展做项目的过程中,遇到了一些问题,从Google中查找,使用C++来开发PHP的中文文章少之又少,而且没有一个手册来告诉用户怎么写m4[2
]
文件,怎么使用zend[3
]
引擎的一套api函数去写相关PHP的接口,这里就怎么用C++语言来开发PHP的一些心得介绍给大家,希望有心人能够有所收获;
二、为什么要用C++开发PHP
使用C++比用C语言开发PHP主要有2个好处:
使用C++能够很方便的操作string类型,本身的一些容器和模板[4
]
、以及面对对象的功能让开发者能够节省大量开发的时间,这是比较重要的一点;
C++可以直接使用C的库,只需要extern "C"
{}将其C的头文件和库定义包含起来就可以,不需要太多的移植工作,可以重复利用前人的代码或者库进行后续的工作;
用C++开发PHP是快速、迅捷的,熟悉了相关的定义以及语法,相信开发PHP不是难事。
三、书写config文件
config.m4[5
]
或config.w32[6
]
文件是编译基础中最核心的文件,这个文件主要是用autoconf[7
]
来产生configure[8
]
配置文件,继而自动生成大家所熟悉的Makefile文件,以Linux系统为例:
你可以自己书写config.m4文件,也可以由Shell脚本
ext_skel[9
]
来生成样板:
[cnangel@localhost ~]$wget
http://docs.php.net/get/php-5.2.5.tar.bz2/from/cn.php.net/mirror
[cnangel@localhost
~]$tar -jxf php-5.2.5.tar.bz2
[cnangel@localhost ~]$cd
php-5.2.6/ext
[cnangel@localhost ext]./ext_skel --extname=extern_name接着你会发现在ext目录下多了一个叫extern_name的目录。进入该目录,会发现目录下有几个文件:
[cnangel@localhost
ext_name]$ls -l
总计 32
-rw-r--r-- 1 cnangel cnangel 2103 06-29 19:00
config.m4
-rw-r--r-- 1 cnangel cnangel 310 06-29 19:00
config.w32
-rw-r--r-- 1 cnangel cnang
相关文档:
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
使用 Java 对 Linux 下文件编码格式进行批量转换
测试使用说明:
1。将 字符集编码格式为 GB2312 的文件 test0.java,test1.java,test2.java 放在 /home/defonds/tmp/test 目录下(test0.java,test1.java,test2.java 作者可以 ......
LINUX 下VI设置
应用程序启动时,先读其配置文件。这对于vi/vim来说就是工作目录下的隐藏文件.vimrc。
过程(以root用户为例)
#vi ~/.vimrc
用以下命令写.vimrc文件为:
&nb ......
到今日,在android平台上调试声音的方面终于有了进展,原来是需要改一个配置文件,目前只是解决了问题,具体原因以后再分析。硬件平台是6410+WM9714,软件平台是ANDROID。现在由于android系统启动时,加载音频服务不成功,处于一个死循环中,老停在登陆界面。此时打印的Logcat信息如下:
......