项目需求:
之前做项目遇到了一个需求: 需要对接c/c++封装的so库,需要用php调用so库里面的方法。
需求设想:
接触之初,脑海中脑补了下这个需求应该怎么整: 没搞过啊,是不是把这个so库文件当做类,然后引用这个类再执行类里的方法。(哈哈,很单纯无知的想法)
拿到so库后,查看了下,这封装过了的,咋引用~~。 查找一番后确定了大致的实施方法: 增加php底层扩展方法,在扩展中引入库进行编译,编译成功生成php的引用扩展库,即可直接调用扩展库方法。
实施测试阶段:
因为是引用c++的扩展库,库里引用和opencv的一些扩展库,里面需要很多配套的扩展,一个萝卜一个坑,慢慢得趟出了很多坑,也获得了很多萝卜。
萝卜1: 编译中报出各种错,不是缺少这个扩展,就是缺少那个扩展,就得针对于各种缺少的各种安装,此过程中了解了很多扩展库的作用。
萝卜2: 系统性得了解了巩固了linux的各种命令,重温了下C语言的语法与so库的封装。
实施阶段:
因为是需要用到php的源码增加扩展,先现在一份和当前php环境版本一致的源码。下载地址: http://php.net/downloads.php
将so库的存放路径写入配置中保存(各个配置的环境路径也许会有不同) 打开 cd /etc/ld.so.conf.d/ vim local.conf 将so库存放路径/usr/local/lib写入保存
解压源码包(路径没要