(参考)基于ARM11的PHP动态扩展库环境的搭建.docVIP

(参考)基于ARM11的PHP动态扩展库环境的搭建.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文档控制记录 序号 修改状态 修改内容 修改人 完成时间 V1.0 创建文档 2011-12-13 目录 文档控制记录 II 1.引言 1 2. 搭建步骤及相关说明 2 2.1概述 2 2.2学习文档 2 2.2搭建步骤: 2 3.主要问题 7 1、动态库的三个不同名字及含义 7 2、如何实现:动态库(ftp(ARM11 10 3、ARM11环境下动态库无法加载 13 1.引言 目的:本文档旨在约束ARM11在嵌入式下的WEB开发过程,主要针对PHP扩展库的撰写,不包括WEB本身的框架设计和搭建。 约束:PHP脚本调用PHP扩展库,扩展库封装开发板动态库的方式 对象:嵌入式WEB开发的界面设计人员、PHP库接口封装人员、C库封装人员 参考文档: 《StmAtmV3.0嵌入式WEB PHP扩展库设计》 -- 《PHP扩展》 – 《Liunx开发学习文档》 – 《arm下php动态库如何加载.html》 《php动态库.html》 《动态库soname.html》 《ftp相关命令.html》 2. 搭建步骤及相关说明 2.1概述 本次《基于ARM11的动态扩展库环境的搭建》,用了将近一周半的时间才收尾,中途遇到大量的问题,并且有些问题的解决方法出乎常理逻辑,通过一些特殊手段和方法才得以解决,后面会一一列出解决方法和相关注意事项…… 2.2学习文档 此次ARM11动态库环境的搭建需优先参考《StmAtmV3.0嵌入式WEB PHP扩展库设计》、《Liunx开发学习文档》其中的动态库制作部分、《PHP扩展》;参照以上几个文档虽可以搭建出一个基本框架,但是在ARM11环境下很多问题便一一暴露,加上网络上资源有限,很多问题都是靠反复验证才得以解决,最终搭建出支持动态库加载的配置环境。 2.2搭建步骤: 1、所需软件:已搭建好,能够实现网页制作的apache+php、arm-linux-gcc交叉编译环境,具体详见《基于S3c6410的WEB开发环境的搭建》-杨洪。 2、搭建具体步骤为: 制作第三方动态库*.so扩展库. 制作PHP动态扩展库 3、制作第三方动态库*.so扩展库: 编写源函数,保存为hellotest.c #includestdio.h #includestdlib.h int hello_add(int a, int b) { return (a + b); } 编写头文件(函数的声明),保存为hellotest.h Int hello_add(int a, int b); 测试代码 test.c #include stdio.h #include stdlib.h #include “hellotest.h” Int main(void) { int nret = 0; nret = hello_add(2,5); printf(“hello_add(2,5) = %d\n”,nret); return 0; } 交叉编译生成动态链接库*.so;后面会对此做详细介绍,此处不再累赘,注意动态库的三个不同的名字:link_name,so_name,real_name。 此处采用Makefile的方式,这样编译C程序以及对其修改会方便很多,其中的符号可以查看相关书籍,此处不再做介绍: 最后编译完结果会在文件下出现: hellotest.c hellotest.h hellotest.o libhellotest.so libhellotest.so.1 libhellotest.so.1.0.0 其中的箭头符号为所建立的链接! 相关Makefile: 测试动态库,超级用户下,拷贝*.so库函数到板卡的/lib目录下,编写测 试代码进行测试,-I 库头文件路径,–L 库文件路径,–l库的链接 [root@yanghong libhellotest]# cp libhellotest.so.1 /lib/ [root@yanghong libhellotest]# cp test /lib/ 在板卡上运行./test可看到显示结果 hello_add(2,5) = 7,则证明第三方*.so是无误的。 下面是如何将*.so编译进PHP扩展库。 4、制作PHP扩展库: 对这部分内容,对原理不清楚,可参照文档《StmAtmV3.0嵌入式WEB PHP扩展库设计》,此处纯粹给出操作性的指导。 自动构建系统,在PHP源码/usr/local/apache-arm11/php-4.4.8/ext执行如下操作: [yanghong@yanghong ext]$ ./ext_skel

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档