0

事实

我在运行 Ubuntu 12.04 LTS 的桌面上安装了metis 5.1.0 。

最近编译了一个并行配置的软件,找不到文件/opt/metis/metis-5.1.0/lib/libmetis.a ,报了致命错误。

这对我来说看起来很奇怪,因为使用相同软件的早期版本和现有的 metis 安装一切都很好。

libmetis.a 的消失

不过,我有证据表明libmetis.a已从第一个 metis 安装的 stderr+stout 文件中安装。例如,从输出中的某处make install我可以看到:

/usr/bin/cmake -P cmake_install.cmake -- Install configuration: "" -- Installing: /opt/metis/metis-5.1.0/include/metis.h -- Installing: /opt/metis/metis-5.1.0/lib/libmetis.a -- Installing: /opt/metis/metis-5.1.0/bin/gpmetis

因此,某些操作必须在某个时候删除了 libmetis.a。我不记得或不知道哪个行动可以做到这一点。

重新安装metis

然后我通过运行我第一次使用的相同脚本重新安装了相同版本的 metis。程序是

sudo make uninstall sudo make clean sudo make config prefix=/opt/metis/metis-5.1.0 shared=1 cc=gcc gdb=1 debug=1 sudo make sudo make install

stdout+sterr 中的相应行已更改

/usr/local/bin/cmake -P cmake_install.cmake -- Install configuration: "" -- Installing: /opt/metis/metis-5.1.0/include/metis.h -- Installing: /opt/metis/metis-5.1.0/lib/libmetis.so -- Installing: /opt/metis/metis-5.1.0/bin/gpmetis

比较

  • cmake生活在另一条道路上。我想不起这样做的原因。我确实确认当前 cmake 已安装在 /usr/local/bin/cmake 中,并且 /usr/bin/cmake 不再存在。无论哪种方式,从那时起,cmake 的版本一直是 3.3.1(我相信)。
  • 安装libmetis.so而不是libmetis.a
  • make install逐行对比新旧stderr+stdout,发现cmake在第一次安装的时候已经搞的比较多。不幸的是,我已经覆盖了第一次安装的文件,无法提供更多细节。

概括

总结一下我注意到的变化是

  • 静态库libmetis.a消失了(盲点为什么/如何/何时)
  • cmake被取代(盲目的为什么/如何/何时)
  • metis 的山寨安装导致共享对象库libmetis.so而不是 libmetis.a,可能是在使用不同的 cmake 之后。我shared=1怀疑地在 config 命令中看到了这一点,但使用脚本是为了忠实地重复所有操作。(虽然并不总是正确编码好的意图。)

目的是按照并行软件的要求,重新放置 libmetis.a 文件。

任何建议提示和智慧来解决这个问题?提前感谢您的思考。

4

0 回答 0