我已经阅读了整个ATLAS安装指南,它说构建共享(.so)库所需要的只是将--shared
标志传递给配置脚本。但是,当我构建时,出现在我的lib
文件夹中的唯一.so
文件是 libsatlas.so
和 libtatlas.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安装了它们。想知道为什么没有自动创建链接)。