- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)