Cmake Metis:libmetis.a消失,重新安装创建libmetis.so 事实
我已经在运行Ubuntu 12.04 LTS的桌面上安装了metis 5.1.0 最近我编译了一个并行配置的软件,它找不到文件/opt/metis/metis-5.1.0/lib/libmetis.a,并抛出了一个致命错误 我觉得这很奇怪,因为使用同一软件的早期版本和现有的metis安装,一切都很好 利伯梅蒂斯的消失 不过,我有证据表明,libmetis.a是从第一次安装metis的stderr+stout文件中安装的。 例如,从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/
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李>
- 通过逐行比较
的新旧stderr+stdout,我发现cmake在第一次安装中投入的精力要多得多。不幸的是,我已经覆盖了第一次安装的文件,无法提供更多细节makeinstall
- 静态库libmetis.a消失(盲点为什么/如何/何时)
- cmake被替换(盲喷为什么/如何/何时)
- 复制安装metis会导致共享对象库libmetis.so而不是libmetis.a,可能是在使用了不同的cmake之后。我怀疑地看着config命令中的
,但使用脚本的目的是忠实地重复所有操作。(尽管并非总是正确地记录下善意。)shared=1
有没有解决这个问题的建议、技巧和智慧?提前感谢您的考虑。如果您可以自由更改
metis
源代码,请尝试从配置调用中找到removeshared=1
选项。或者查找add_library(metis)
命令(在CMakeLists.txt中的一个文件中,可能在顶级文件中),并向其中添加STATIC
关键字。如果编写正确,脚本可能会在进行此类修改时正常工作。将具有正确值的BUILD\u SHARED\u LIBS
传递给CMake。