【问题标题】:Compiling OpenFOAM's scotch on macOS在 macOS 上编译 OpenFOAM 的 scotch
【发布时间】:2022-01-19 02:13:05
【问题描述】:

我正在尝试编译嵌入到 OpenFOAM.org 第三方存储库 here 中的 scotch 库。我运行了命令

make -C ./ThirdParty-dev/scotch_6.0.9/src/

我收到以下错误消息:

(cd libscotch ; make VERSION=6 RELEASE=0 PATCHLEVEL=9 scotch && make install) 制作 \ 抄送=“gcc”\ CCD="gcc"\ 苏格兰威士忌.h \ 苏格兰威士忌.h \ libscotch.so \ libscotcherr.so \ libscotcherrexit.so gcc -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -Drestrict=__restrict -DSCOTCH_VERSION_NUM=6 -DSCOTCH_RELEASE_NUM=0 -DSCOTCH_PATCHLEVEL_NUM=9 dummysizes.c -o dummysizes -Xlinker --no-as-needed -lz -lm -lrt ld:未知选项:--no-as-needed clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) make[2]: *** [dummysizes] 错误 1 make[1]: *** [scotch] 错误 2 制作:*** [libscotch] 错误 2

我不确定此错误消息的含义。如果它抱怨scotch 不可用,这就是我首先编译它的原因。无奈之下,我也尝试通过brew install scotch 安装它,但无济于事。如果您能帮助我理解上述错误信息并解决问题,我将不胜感激。

【问题讨论】:

  • gcc -O3 ... -Xlinker --no-as-needed ... 命令将--no-as-needed 选项传递给链接器ld。不幸的是,MacOS 上的 ld 无法识别该选项。改变它的最佳方法取决于您如何配置事物。您可能需要编辑正确的makefile(当然要先进行适当的备份)。
  • @G.M. ld 的跨平台替代品是什么?或者我可以通过 HomeBrew 在 macOS 上安装它? ??????

标签: macos gcc makefile clang gnu-make


【解决方案1】:

scotch 版本有点不同,它们通过用户负责提供的src/Makefile.inc 分别管理所有操作系统/编译器特定的位。当然,它们还在 src/Make.inc/ 目录中提供了一些示例,但它们可能无法正确满足您特定的操作系统/编译器要求。

由于您从第三方来源而不是从原始上游来源获取 scotch 源文件,因此您还有其他人的 src/Makefile.inc,恰好是 Linux 特定版本。因此,它有不正确的链接(甚至编译)选项也就不足为奇了。

openfoam.com 使用的特定于达尔文的 makefile 调整:

# Linux:
LIB         = .so
ARFLAGS     = $(WM_CFLAGS) -shared -o
LDFLAGS     = -Xlinker --no-as-needed $(WM_LDFLAGS) -lm -lrt

# Darwin:
LIB         = .dylib
ARFLAGS     = $(WM_CFLAGS) -dynamiclib -undefined dynamic_lookup -o
LDFLAGS     = $(WM_LDFLAGS) -lm

不用担心任何其他差异来源(在 OpenFOAM WM_CFLAGSWM_LDFLAGS 变量中),您似乎正在使用 Linux(仅限 gcc?)链接选项用于 Darwin - 所以他们应该不足为奇不工作。

【讨论】:

  • 感谢 Mark 的详细回复。您可以删除其他答案。我会尝试您的指示,但现在有两个问题:1.您所说的第三方来源是什么意思? ? 我是从 GitHub 上的官方仓库下载的。 2. 使用您之前提供的链接,看起来好像您在上游合并了一些 macOS 补丁。那正确吗?如果这是正确的,如果我在您的 GitLab/GitHub 上打开特定于 macOS 的问题(错误、功能请求),我会感激吗?
【解决方案2】:

原始苏格兰威士忌来源的位置略有移动(似乎与他们的文件管理器有关),但OpenFOAM ThirdParty BUILD.md 中始终包含合理的最新参考。 URL 以链接的形式提供,但也列在文件底部附近,以便于 grepping。 当前苏格兰威士忌链接:https://gforge.inria.fr/frs/download.php/file/38352/scotch_6.1.0.tar.gz

最新的 scotch 实际上是 scotch-6.1.2,但在 dgraph 计算(ptscotch 中的分布式图)中似乎存在回归,所以现在最好坚持使用 6.1.0。 这是 scotch repo 本身的信息 (https://gitlab.inria.fr/scotch/scotch) - 应该是最可靠的信息来源。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2014-05-18
    • 2021-07-30
    • 2021-03-17
    相关资源
    最近更新 更多