V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
m939594960
V2EX  ›  问与答

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

  •  1
     
  •   m939594960 · 2019-06-09 12:58:58 +08:00 · 1261 次点击
    这是一个创建于 2027 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己编写了一个扩展,引用了一个第三方的 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 扩展的群 或者 论坛,我能更方便的获取信息

    感谢~~

    4 条回复    2019-06-09 15:18:46 +08:00
    m939594960
        1
    m939594960  
    OP
       2019-06-09 13:37:49 +08:00
    没人么?
    dilu
        2
    dilu  
       2019-06-09 13:52:39 +08:00 via Android
    看起里你是用了 pcre 但是实际没有装
    m939594960
        3
    m939594960  
    OP
       2019-06-09 14:00:41 +08:00
    @dilu 我引用的 C++ 的库确实使用了 pcre,但是我本地也安装了 pcre,在 config.m4 中也加了这个库,但是还是报这个错误
    iceheart
        4
    iceheart  
       2019-06-09 15:18:46 +08:00 via Android
    ldd 看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 16:46 · PVG 00:46 · LAX 08:46 · JFK 11:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.