keyend 2023-06-21 11:01 采纳率: 0%
浏览 32
已结题

cygwin环境下编译phpredis 提示 undefined reference to `php_json_decode_ex'

尝试使用cygwin在win10环境下搭建一个php-fpm + swoole的运行环境。前面还算顺利吧,直到编译php_redis扩展这边的时候,卡住了,怎么都过不了。

/bin/sh /usr/local/redis/libtool --mode=link cc -DPHP_ATOM_INC -I/usr/local/redis/include -I/usr/local/redis/main -I/usr/local/redis -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/php/ext  -DHAVE_CONFIG_H  -g -O2    -o redis.la -export-dynamic -avoid-version -module -no-undefined -rpath /usr/local/redis/modules  redis.lo redis_commands.lo library.lo redis_session.lo redis_array.lo redis_array_impl.lo redis_cluster.lo cluster_library.lo -lphp7
libtool: link: rm -fr  .libs/redis.dll.a
libtool: link: cc -shared  .libs/redis.o .libs/redis_commands.o .libs/library.o .libs/redis_session.o .libs/redis_array.o .libs/redis_array_impl.o .libs/redis_cluster.o .libs/cluster_library.o   -lphp7  -g -O2   -o .libs/redis.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/redis.dll.a
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: .libs/library.o: in function `php_json_decode':
/usr/include/php/ext/json/php_json.h:105: undefined reference to `php_json_decode_ex'
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: .libs/library.o: in function `redis_serialize':
/usr/local/redis/library.c:2408: undefined reference to `php_json_encode'
/usr/lib/gcc/x86_64-pc-cygwin/11/../../../../x86_64-pc-cygwin/bin/ld: .libs/library.o: in function `php_json_decode':
/usr/include/php/ext/json/php_json.h:105: undefined reference to `php_json_decode_ex'
collect2: error: ld returned 1 exit status
make: *** [Makefile:211: redis.la] Error 1

网上各种找,也没有解决。找到一个遇到跟我一样问题的,问题是人家说怎么弄啊弄啊,终于解决了,可是没有分享出来怎么解决的。无奈试着QIU助GPT,问了就是说各种库没有安装,仔细检查了下,libjson-c明明有安装了啊,php-json也有,最终还是没有解决。没办法了,在这里提问下,希望能解决,能帮助到后面和我遇到一样问题的人。

  • 写回答

1条回答 默认 最新

  • 易只轻松熊 2023-06-22 02:16
    关注

    这个错误是由于编译php_redis扩展时找不到相关的函数引起的。根据错误信息,似乎是缺少了php_json_decode_ex和php_json_encode函数的定义。

    可能是因为在编译php_redis扩展时,缺少了相关的依赖项或者没有正确配置。

    解决这个问题的一种方法是确保系统中安装了正确版本的PHP和相关依赖项,并且正确配置了编译环境。

    另外,你也可以尝试使用已经编译好的php_redis扩展,而不是自己编译。你可以在官方网站或者GitHub上找到适用于你的PHP版本的预编译扩展。

    如果问题仍然存在,你可以尝试在编译php_redis扩展时添加一些额外的编译选项,例如指定正确的头文件和库文件路径。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月3日
  • 修改了问题 6月21日
  • 创建了问题 6月21日

悬赏问题

  • ¥15 mac playcover上原神在登录后的加载页面闪退,重新下载原神IPA和playcover均无效
  • ¥20 node-dev能不能离线安装?
  • ¥20 六子棋博弈基于Alpha-Beta剪枝搜索算法的优化
  • ¥15 mlx90393用stm32f1的单片机使用软件i2c通信一直报错
  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?