在ATLAS中构建共享库

时间:2012-11-18 10:27:47

标签: installation shared-libraries lapack atlas

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

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

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

有没有人遇到过这个?我做错了什么?

3 个答案:

答案 0 :(得分:5)

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

我们需要:

  • 启用-fPIC编译器选项
  • 在'lib'目录中运行'make shared cshared ptshared cptshared'

我们甚至没有使用--shared for configure,可能是因为它没有做太多。

如果您想构建ATLAS(以及您将要链接它的任何内容)而不会头疼,请查看EasyBuild。

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

答案 1 :(得分:0)

First if you have incorrectly specified the --force-tids flag for configure then the parallel libs won't build. To check this you can run make ptcheck。我对此标志here

的规范有疑问

然后,如果我检查我生成的ATLAS Makefile,它会说“......只有当atlas被构建到一个lib”时才真正构建两个“胖”库:libsatlas.so和libtatlas.so。

我认为您可以将FFPACK与这些库链接起来,或者更改生成的ATLAS Makefile以包含您需要的目标(由于静态库可用,因此不会太难)。

答案 2 :(得分:-1)

我必须手动创建.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安装它们。想知道为什么没有自动创建链接。)