加载共享库时出错:libgfortran.so.1: 错误的 ELF class: ELFCLASS32

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

我正在尝试使用此处 (SFM by Nghiaho) 中的 Structure From Motion 示例。我在 运行 过程的第二部分遇到了一些问题: 我从这里 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

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

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

我不知道我现在必须做什么。

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

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

您真的不能只使用 libgfortran 3 并使用它来代替所需的 libgfortran 1。它们不兼容。 ABI 在这两个版本之间发生了两次变化。如果您设法 运行 版本 3 的程序,它可能会崩溃。您恰好需要文档中链接的那些版本。祝大家安装顺利。

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