【问题标题】:error while loading shared libraries: libgfortran.so.1: wrong ELF class: ELFCLASS32加载共享库时出错:libgfortran.so.1:错误的 ELF 类:ELFCLASS32
【发布时间】:2017-11-05 14:01:03
【问题描述】:

我正在尝试使用此处 (SFM by Nghiaho) 中的“运动结构”示例。我在运行过程的第二部分遇到了一些问题: 我已经从这里pmvs2 doc 下载了 PMVS2(基于补丁的多视图立体软件)。 我在 /pmvs-2/program/main 文件夹中打开了终端并输入:

./pmvs2 myfolder/options.txt

options.txt 文件是在流程的第一步中创建的。我有这个错误:

./pmvs2: error while loading shared libraries: libgfortran.so.1: wrong ELF
class: ELFCLASS32

我发现问题是因为我运行的是 64 位版本的程序,而 gfortran 库是为 32 位编译的。 我在 /usr/lib32/ 文件夹中有一个名为 libgfortran.so.3 的文件,并且我创建了一个虚拟链接:

ln -s /usr/lib32/libgfortran.so.3 /usr/lib32/libgfortran.so.1

我不知道我现在要做什么。

【问题讨论】:

  • 这种从版本 1 到版本 3 的符号链接不会有任何好处。这些库有不同的版本号是有充分理由的。不兼容。它不会真正改变 32/64 位问题中的任何内容。您是否尝试安装 64 位 gfortran?如果不是,为什么?这是显而易见的事情。
  • 另外,为什么要标记c++?为什么不标记fortran
  • 当然,我搜索了 64 位版本,但没有发现任何有用的东西。我在这个世界上是如此陌生。

标签: fortran shared-libraries 32bit-64bit gfortran photogrammetry


【解决方案1】:

看起来该软件是封闭源代码并以二进制形式分发。不是很好。它还依赖于 RedHat Linux 4.1 中的许多共享库。这是非常糟糕和非常不专业的。 RedHat 4.1 和现代 Ubuntu 不兼容二进制。

让它发挥作用并不容易。您必须在文档http://www.di.ens.fr/pmvs/documentation.html 中安装所有这些库,并且您必须在其中提到的那些版本中安装它们。

您真的不能只使用 libgfortran 3 并使用它来代替所需的 libgfortran 1。它们不兼容。这两个版本之间的 ABI 已更改两次。如果您确实设法使用版本 3 运行该程序,它可能会崩溃。您需要文档中链接的那些版本。祝大家安装好。

文档还提到了包中的一些源代码。但是我担心它们只是一些示例程序。如果它们实际上是整个 PMVS2 库的源代码,那么最好自己编译并忘记二进制文件。

【讨论】:

  • 感谢您的回答。问题是我找不到一种简单的方法来安装它们(也不难)。这个 gfortran 库让我发疯。我对其他库没有什么问题,但我已经安装了它们,一切都很好。这个库不一样。
  • 您必须自己从源代码编译 gfortran。这是一个非常旧的版本。可能是4.1版。没有其他办法。没有现有的二进制文件。您必须自己从源代码编译它。
  • 我去试试,我会告诉你的。你能链接一些有用的网站吗?谢谢!
  • 我发现了错误。这不是关于 libgfortran,而是我正在使用的文件的二进制版本! Here 他们说二进制版本是在 32 位机器上编译的。 pmvs2 应该是兼容的,但它不是。
猜你喜欢
  • 2014-11-20
  • 1970-01-01
  • 2011-09-04
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2022-08-17
  • 2013-09-05
  • 1970-01-01
相关资源
最近更新 更多