社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
参考龙哥的文章开发一个使用外部库的扩展,(这里非常感谢龙哥
)遇到了如下问题:
1. 开发扩展文章地址: PHP7扩展开发之对象方式使用lib库
php7: symbol lookup error: /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/uselib.so: undefined symbol: show_site
uselib.so
扩展中查看符号show_site
的类型 可以看到
show_site
的类型为U
U
的解释结果合理,没有啥问题
看编译过程是否加入了hello.so的lib库
-
我想看到的是这样的配置
-lhello
, 结果没有
看资料文档发现也是使用 PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $XXX_DIR/$PHP_LIBDIR,XXX_SHARED_LIBADD)
添加链接库, 这里没问题
PHP_SUBST(SAY_SHARED_LIBADD)
看生成的Makefile
中是否有生成引入外部扩展的配置信息
-
可以看到是有的,但是
只有声明没有使用
, 查找资料没发现如何设置某个参数来添加该链接库信息到编译参数中,如果您知道,还望不吝赐教
手动解决外部依赖
配置参数没找到,只好试试手动在编译的时候添加链接库信息,修改Makefile
文件,在最后一行./uselib.la
的末尾添加$(SAY_SHARED_LIBADD)
,注意前面有个空格
-
sudo make clean
sudo make
sudo make install
不能发现hello链接库,于是查看目录
/usr/local/lib/
下面的确有hello.so
文件,为啥提示找不到呢,其实这里只要将hello.so
修改为libhello.so
即可,然后在次执行上面的编译过程,搞定.
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!