自己编写一个 PHP 扩展,可以正常编译,使用的时候报错 Unable to load dynamic library ... _pcre_free

2019-06-09 12:58:58 +08:00
 m939594960

自己编写了一个扩展,引用了一个第三方的 c++ 的库,编译的时候一切正常,加载到 PHP 后运行报错

PHP Warning:  PHP Startup: Unable to load dynamic library '/Users/hooklife/Projects/php-build/7.3/lib/php/extensions/no-debug-non-zts-20180731/r3_route.so' (tried: /Users/hooklife/Projects/php-build/7.3/lib/php/extensions/no-debug-non-zts-20180731/r3_route.so (dlopen(/Users/hooklife/Projects/php-build/7.3/lib/php/extensions/no-debug-non-zts-20180731/r3_route.so, 9): Symbol not found: _pcre_free
  Referenced from: /Users/hooklife/Projects/php-build/7.3/lib/php/extensions/no-debug-non-zts-20180731/r3_route.so
  Expected in: flat namespace

这是我的 config.m4

AC_PROG_CC
AC_PROG_CC_STDC
AC_FUNC_VPRINTF
AC_CHECK_FUNCS([gettimeofday memset strchr strdup strndup strstr pcre])

PHP_ARG_ENABLE(r3_route, whether to enable r3_route support,
[  --enable-r3_route          Enable r3_route support], no)


if test "$PHP_R3_ROUTE" != "no"; then

  r3_sources="
  r3/src/str.c
  r3/src/token.c
  r3/src/slug.c
  r3/src/edge.c
  r3/src/node.c
  r3/src/list.c
  r3/src/match_entry.c"

  AC_DEFINE(HAVE_PCRE, 1, [ ])
  PHP_ADD_INCLUDE(/usr/local/include/pcre)
  PHP_ADD_LIBRARY_WITH_PATH(z,/usr/local/lib/pcre, R3_ROUTE_SHARED_LIBADD)
  PHP_ADD_INCLUDE("$srcdir/r3/include")


  PHP_NEW_EXTENSION(r3_route, $r3_sources r3_route.c, $ext_shared)

  PHP_SUBST(R3_ROUTE_SHARED_LIBADD)
fi


查找了很长时间没找到相关内容,请求大家帮帮忙。 随便问下有没有什么专门的 PHP 扩展的群 或者 论坛,我能更方便的获取信息

感谢~~

1259 次点击
所在节点    问与答
4 条回复
m939594960
2019-06-09 13:37:49 +08:00
没人么?
dilu
2019-06-09 13:52:39 +08:00
看起里你是用了 pcre 但是实际没有装
m939594960
2019-06-09 14:00:41 +08:00
@dilu 我引用的 C++ 的库确实使用了 pcre,但是我本地也安装了 pcre,在 config.m4 中也加了这个库,但是还是报这个错误
iceheart
2019-06-09 15:18:46 +08:00
ldd 看看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572118

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX