内容简介:Extension的编译是比较简单的,下面是个示例Makefile:这将创建一个可动态加载的Extension模块,如果想将Extension静态编译进PHP,就需要使用PHP本身的编译系统,这里不作介绍。另外,Zend提供了一个小脚本来简化创建和编译Extension的过程,可以在《PHP手册》的相关章节找到其使用方法。
类和对象(TODO)
附录A. Extension的编译
Extension的编译是比较简单的,下面是个示例Makefile:
# 扩展搜索目录,模块被放到这里才能被找到和加载 # 可以从php.ini中的extension_dir命令获取该值 PHP_EXT_HOME=/home/wiki/php5/lib/php/extensions/ # PHP源代码路径 PHP_SRC=/home/wiki/wikienv/install/php-5.2.3 INCLUDE=-I$(PHP_SRC) -I$(PHP_SRC)/main -I$(PHP_SRC)/TSRM -I$(PHP_SRC)/Zend CC=gcc all: first_module.so first_module.so: first_module.o $(CC) -shared -rdynamic -o first_module.so first_module.o # 注意不要忘了“-DCOMPILE_DL_FIRST_MODULE=1”,否则不会导出get_module() first_module.o: first_module.c $(CC) -fpic -DCOMPILE_DL_FIRST_MODULE=1 $(INCLUDE) -c first_module.c clean: rm -fr *.so *.o install: first_module.so cp -fp first_module.so $(PHP_EXT_HOME)
这将创建一个可动态加载的Extension模块,如果想将Extension静态编译进PHP,就需要使用 PHP 本身的编译系统,这里不作介绍。
另外,Zend提供了一个小脚本来简化创建和编译Extension的过程,可以在《PHP手册》的相关章节找到其使用方法。
目前,Zend正在开发一个更加完善和标准的Extension生成工具,可以在这里找到它: http://pecl.php.net/package/PECL_Gen
附录B. Extension的加载过程
Extension有两种加载方式,通过php.ini在启动时加载或是通过dl()函数在运行时加载,前者需在php.ini中添加一行命令:extension=myext.so。这两种方式最后都将调用一个名为php_ld()的内部函数。
php_ld()首先调用系统例程加载动态库,之后解析并执行get_module()函数来获得模块的zend_module_entry结构(参见 2.1.3 )。
然后,调用函数zend_register_module_ex()来注册模块,这个函数先将模块的zend_module_entry加入到一个名为module_registry的HashTable中,然后调用zend_register_functions将模块导出的函数加入CG(function_table)(参见 2.5 )这个HashTable中,这样我们就可以调用模块导出的函数了。最后,php_ld()将调用模块的启动函数(参见 2.4 )来初始化模块。
如果模块是dl()动态加载的,Zend还将接着调用模块的激活函数,因为当前显然有页面在运行。
最后要说明的是,通过dl()加载的模块称为“临时模块”,在页面执行完毕时将被卸载,同时,其创建的常量和资源也将被销毁。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- linux 内核开发指南 - 2 开发流程
- linux 内核开发指南 - 6 跟进
- linux 内核开发指南 - 1介绍
- linux 内核开发指南 - 5 发送补丁
- linux 内核开发指南 - 3 早期规划
- linux 内核开发指南 - 7 高级主题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms for Image Processing and Computer Vision
Parker, J. R. / 2010-12 / 687.00元
A cookbook of algorithms for common image processing applications Thanks to advances in computer hardware and software, algorithms have been developed that support sophisticated image processing with......一起来看看 《Algorithms for Image Processing and Computer Vision》 这本书的介绍吧!