解决 libhogweed.so.2: undefined symbol: __gmpn_cnd_add_n
将服务器从 Debian Wheezy 升级到 Jessie 后,我在 apt-get update 期间遇到以下错误:
libhogweed_error.txt
/usr/lib/apt/methods/https: symbol lookup error: /usr/lib/x86_64-linux-gnu/libhogweed.so.2: undefined symbol: __gmpn_cnd_add_n调试此问题非常简单。我们知道 apt 软件在库 libhogweed.so.2 中找不到函数 __gmpn_cnd_add_n。这种错误几乎总是意味着发生错误的库(libhogweed.so.2)期望其依赖的库(libgmp)的不同版本。使用 ldd 我们可以检查实际使用的版本:
ldd_output.sh
$ ldd /usr/lib/x86_64-linux-gnu/libhogweed.so.2
[...]
libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x00007f5ca1b59000)
[...]我们可以清楚地看到使用的是 /usr/local/lib 中的 libgmp.so.10。这表明在某个时候有人在系统上安装了与包管理器安装的版本不同的自定义 libgmp 版本。
通常我们可以简单地删除 /usr/local/lib/libgmp.so.10,这通常可以解决问题,因为 libhogweed 开始使用包管理器安装的正确版本。但请注意,使用 libgmp 的其他软件可能会因为库版本更改而停止工作。如果删除本地库不起作用,尝试使用上面列出的方法重新检查。
Check out similar posts by category:
Linux
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow