解决 Ubuntu 18.04 使用 gcc 7 版本导致编译安装 libmemcached 失败的问题

最近换了一个服务器,在使用宝塔安装环境时,发现 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/server-blog/server/ubuntu-18_04-libmemcached-bug/)
部分来自互联网的文章,如有侵权,请联系我,24小时内删除,谢谢

手机打开扫一扫即可访问本页面

感谢您的支持,SunriseYDY 会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

日出一点一 | 在探索的路上永不止步

分享到微博 分享到QQ 微信赞赏 在手机上阅读 点赞 0

评论一下呗亲

电子邮件地址不会被公开。 必填项已用*标注