在ATLAS中构建共享库

7
我已经阅读了整个ATLAS安装指南,指南上写道构建共享库(.so)的所有需求是通过传递--shared标志给configure脚本。然而,当我进行构建时,我的lib文件夹中出现的唯一.so文件是libsatlas.so和libtatlas.so,尽管指南上说应该有另外六个文件。
libatlas.so, libcblas.so, libf77blas.so, liblapack.so, libptcblas.so, libptf77blas.so

安装后,一些测试失败了,因为缺少这些库。此外,在安装期间,FFPACK需要这些库。
有人遇到过这种情况吗?我做错了什么吗?

如何将“--shared”标志传递给配置脚本? - DunkOnly
3个回答

5
根据我的经验,这比那要复杂得多,请查看我们在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的开发人员)


如何启用-fPIC编译器选项? - DunkOnly
2
@郭同jet_专心 请查看 https://github.com/hpcugent/easybuild-easyblocks/blob/c2a9fe50fcdb77708f47eb1edfa378a8a848808d/easybuild/easyblocks/a/atlas.py#L123基本上,您可以使用“-Fa alg -fPIC”配置ATLAS。 - Kenneth Hoste
如果_Easy_Build的安装真的很_easy_,那就太好了。我下载了你的引导脚本,甚至看了视频(从来不明白为什么人们要让你在非文本格式中前后跳转查找基于文本的说明),但仍然无法让脚本正常工作。非常令人沮丧的经历,很抱歉这样说。 - Sixtyfive
@RainerVerteidiger 很抱歉听到它对你没起作用... 请考虑在 https://github.com/easybuilders/easybuild-framework/issues 报告你遇到的问题,希望我们能解决它们。 - Kenneth Hoste

0

如果您在 configure 中错误地指定了 --force-tids 标志,则并行库将无法构建。要检查这一点,可以运行 make ptcheck。我对此标志的规格有疑问在这里

然后,如果我检查我的 ATLAS Makefile 结果,它会显示“... 仅当 atlas 构建为一个 lib 时才执行”,并且确实只构建了两个“fat” libs:libsatlas.so 和 libtatlas.so。

我猜你可以链接 FFPACK 到那些库,或者更改生成的 ATLAS Makefile 以包含所需的目标(因为静态库可用,所以这不会太难)。


-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安装它们。不知道为什么链接没有自动创建。


问题是关于从源代码“构建”ATLAS,而不是使用软件包管理器安装它。 - ahmethungari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接