在 ATLAS 中构建共享库



我已经阅读了整个ATLAS安装指南,它说构建共享(.so)库所需要的只是将--shared标志传递给配置脚本。但是,当我构建时,出现在我的lib文件夹中的唯一.so文件是 libsatlas.solibtatlas.so ,尽管指南说应该有六个其他文件:

libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so

安装后,某些测试失败,因为这些库丢失。此外,FFPACK 在安装过程中需要这些库。

有人遇到过这种情况吗?我做错了什么?

根据我的经验,它比这复杂得多,请参阅我们在 https://github.com/hpcugent/easybuild-easyblocks/blob/master/easybuild/easyblocks/a/atlas.py 中的 ATLAS 构建过程的 EasyBuild 实现。

我们需要:

  • 启用 -fPIC 编译器选项
  • 在"lib"目录中运行"Make Shared
  • cshared ptshared cptshared

我们甚至没有使用 --shared 进行配置,可能是因为它没有做太多事情。

如果你想构建ATLAS(以及你将与之链接的任何内容)而不费吹灰之力,请查看EasyBuild。

(免责声明:我是EasyBuild的开发人员)

首先,

如果您错误地指定了 --force-tids 标志进行配置,则不会构建并行库。要检查这一点,您可以运行 make ptcheck。我对这里这个标志的规格有疑问

然后,如果我检查我生成的 ATLAS 制作文件,它说"......只有当 atlas 构建为一个库时",实际上只构建了两个"胖"库:libsatlas.so 和 libtatlas.so。

我想知道您可以将 FFPACK 链接到这些库,或者更改生成的 ATLAS Makefile 以包含您需要的目标(这不会太难,因为静态库可用)。

我不得不手动创建指向 .so.3 文件的链接。因此,版本库文件存在,但不是cmake要查找的文件。

运行

 sudo ln -s libatlas.so.3 libatlas.so
 sudo ln -s libcblas.so.3 libcblas.so
 sudo ln -s liblapack_atlas.so.3 

(我没有构建cblas,atlas或lapack,而是使用apt-get安装了它们。想知道为什么没有自动创建链接)。

相关内容

  • 没有找到相关文章

最新更新