【问题标题】:libmpfr.so.4 dependency with --disable-sharedlibmpfr.so.4 依赖与 --disable-shared
【发布时间】:2013-02-25 22:39:56
【问题描述】:

大家! 我有同样的结果 **

加载共享库时出错:libmpfr.so.4: cannot open shared 目标文件:没有这样的文件或目录

但在另一个配置下:

../gcc.s/configure      \
--target=$LFS_TGT       \
--prefix=/tools     \
--with-sysroot=$LFS     \
--with-newlib       \
--without-headers       \
--with-local-prefix=/tools  \
--with-native-system-header-dir=/tools/include  \
--disable-nls       \
--disable-shared        \
--disable-multlib       \
--disable-decimal-float \
--disable-threads       \
--disable-libmudflap    \
--disable-libssp        \
--disable-libgomp       \
--disable-libquadmath   \
--enable-language=c     

在 GCC 源代码树中存在 gmp、mpc、mpfr

我的问题是 怎么会发现--disable-shared 启用将 cc1 链接到 libmpfr.so.4 insteed static libmpfr.a 存在于 gcc 构建结果中:

gcc.b/mpfr/src/.libs/libmpfr.a

【问题讨论】:

  • 阅读 gcc 文档,--disable-shared 不会做你认为它做的事。现在,当 mpfr 在树中构建时,通常只构建 libmpfr.a。为什么它会在需要调查之前找到系统 libmpfr.so,您应该在编译期间记录所有输出,然后搜索与 mpfr 链接的链接器调用。

标签: linux gcc toolchain mpfr


【解决方案1】:

首先,运行pacman -Syu 并执行任何/所有更新。 一定要注意 pacman 的输出(如果有很多输出,请检查 /var/log/pacman.log)。查找并合并找到的任何 .pacnew,日志将显示这些文件的位置,或者您也可以ls -al /etc/*.pacnew,但无论如何都要检查日志以确保您没有错过任何子目录或其他位置的任何文件。此外,如果内核已更新,请确保重新启动。如果这不能解决问题,则针对最新的库重建 mpfr。

Here 是 Arch Linux Wiki 关于处理 .pacnew 和 .pacsave 文件的链接。

执行完整更新

# pacman -Syu

如果 mpfr 不能从更新中修复

# pacman -Syu mpfr 始终在安装/更新时使用-Syu,以确保所有 repo 都已更新。

检查 libmpfr.so.* 所有权。

# pacman -Qo /usr/lib/libmpfr.so

/usr/lib/libmpfr.so.4.1.1 is owned by mpfr 3.1.1.p2-2

如果您在更新后遇到任何问题,请将日志和错误消息粘贴到 pastebin 网站上,我会看看。

对不起, 我以为这被标记为[archlinux],但它显然不是(谢谢乔纳森·韦克利)。但同样的步骤也适用。将pacman -* 替换为您的分发包管理器apt-get、yum、emerge,无论它可能是什么。 mpfr 必须针对较新的库进行重建。

【讨论】:

  • 这是 Arch Linux 特有的……是使用 Arch 的 OP 吗?
  • 我不会撒谎的。我可以发誓它被标记为archlinux。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-13
  • 2019-12-25
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多