最近换了一个服务器,在使用宝塔安装环境时,发现 php 的 memcached 扩展始终安装失败,查看了日志后发现是 libmemcached 编译失败,导致无法编译安装 memcached 扩展。我尝试手动编译 libmemcached 发现也是出错,提示:
clients/memflush.cc:42:22: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (opt_servers == false)
^~~~~
clients/memflush.cc:51:24: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if (opt_servers == false)
^~~~~
于是乎查了一下本机的 gcc 版本是 7.3,猜测可能是 gcc 的新版本导致了这个问题,Google 了一下发现果然有这个 Bug,也有人放出了解决方案,这里具体说一下。
从上面的错误提示也可以看出就是这个 “clients/memflush.cc” 文件中第 42 和 51 行的问题,网上给出的解决方案就是将这两行的:
if (opt_servers == false)
都改为:
if (!opt_servers)
就这样,问题解决,这下子就又可以愉快地编译 libmemcached 安装 memcached 扩展了。
之后我再写一篇如何编译安装 PHP 的 memcached 扩展。
参考:
Ubuntu 18.04编译memcached失败 · Issue #154 · lj2007331/oneinstack
Bug #1663985 “Broken build with GCC 7” : Bugs : libmemcached
https://src.fedoraproject.org/cgit/rpms/libmemcached.git/plain/libmemcached-build.patch
本作品由 sunriseydy 采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
文章内容如未说明均为原创,欢迎转载,但请注明原作者(sunriseydy)和原文链接(https://blog.sunriseydy.top/technology/linux/ubuntu-18_04-libmemcached-bug/)
部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢
感谢您的支持,SunriseYDY 会继续努力的!



打开支付宝扫一扫,即可进行扫码打赏哦
日出一点一 | 在探索的路上永不止步