Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmake Metis:libmetis.a消失,重新安装创建libmetis.so 事实_Cmake_Shared Libraries_Static Libraries_Metis - Fatal编程技术网

Cmake Metis:libmetis.a消失,重新安装创建libmetis.so 事实

Cmake Metis:libmetis.a消失,重新安装创建libmetis.so 事实,cmake,shared-libraries,static-libraries,metis,Cmake,Shared Libraries,Static Libraries,Metis,我已经在运行Ubuntu 12.04 LTS的桌面上安装了metis 5.1.0 最近我编译了一个并行配置的软件,它找不到文件/opt/metis/metis-5.1.0/lib/libmetis.a,并抛出了一个致命错误 我觉得这很奇怪,因为使用同一软件的早期版本和现有的metis安装,一切都很好 利伯梅蒂斯的消失 不过,我有证据表明,libmetis.a是从第一次安装metis的stderr+stout文件中安装的。 例如,从makeinstall输出的某处,我可以看到: /usr/bin/

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

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

我觉得这很奇怪,因为使用同一软件的早期版本和现有的metis安装,一切都很好

利伯梅蒂斯的消失 不过,我有证据表明,libmetis.a是从第一次安装metis的stderr+stout文件中安装的。 例如,从
makeinstall
输出的某处,我可以看到:

/usr/bin/cmake-p cmake_install.cmake
--安装配置:“
--安装:/opt/metis/metis-5.1.0/include/metis.h
--安装:/opt/metis/metis-5.1.0/lib/libmetis.a
--安装:/opt/metis/metis-5.1.0/bin/gpmetis

因此,某些操作一定在某个时候删除了libmetis.a。 我不记得也不知道是哪一种行为造成了这种情况

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

sudo进行卸载
sudo使干净
sudo make config prefix=/opt/metis/metis-5.1.0 shared=1 cc=gcc gdb=1 debug=1
sudo-make
sudo make安装

不过,stdout+sterr中的相应行已更改

/usr/local/bin/cmake-p cmake_install.cmake
--安装配置:“
--安装:/opt/metis/metis-5.1.0/include/metis.h
--安装:/opt/metis/metis-5.1.0/lib/libmetis.so
--安装:/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
  • 通过逐行比较
    makeinstall
    的新旧stderr+stdout,我发现cmake在第一次安装中投入的精力要多得多。不幸的是,我已经覆盖了第一次安装的文件,无法提供更多细节
总结 总结一下我注意到的变化是

  • 静态库libmetis.a消失(盲点为什么/如何/何时)
  • cmake被替换(盲喷为什么/如何/何时)
  • 复制安装metis会导致共享对象库libmetis.so而不是libmetis.a,可能是在使用了不同的cmake之后。我怀疑地看着config命令中的
    shared=1
    ,但使用脚本的目的是忠实地重复所有操作。(尽管并非总是正确地记录下善意。)
其目的是按照并行软件的要求,使libmetis.a文件再次就位


有没有解决这个问题的建议、技巧和智慧?提前感谢您的考虑。

如果您可以自由更改
metis
源代码,请尝试从配置调用中找到remove
shared=1
选项。或者查找
add_library(metis)
命令(在
CMakeLists.txt中的一个文件中,可能在顶级文件中),并向其中添加
STATIC
关键字。如果编写正确,脚本可能会在进行此类修改时正常工作。将具有正确值的
BUILD\u SHARED\u LIBS
传递给CMake。