gpt4 book ai didi

r - ld:未知选项:-platform_version 从源构建 R 包时

转载 作者:行者123 更新时间:2023-12-04 04:13:57 27 4
gpt4 key购买 nike

某些 R 包,例如 mgcv,无法使用 clang 10+ 从源代码编译(在 macOS 10.14 和 R 版本 3.6+ 下)。编译时报错为

ld: unknown option: -platform_version

如何解决此错误并编译这些包?

最佳答案

ld 的问题与 Clang 10 fails to link C++ application with CMake on macOS 10.12 中的问题相同.但是,添加标志 -DCMAKE_CXX_FLAGS="-mlinker-version=305" 的建议不适用于 R 包编译过程。对于 R,您需要将 -mlinker-version=305 添加到 LDFLAGS 到您的 Makevars 文件,通常位于 $HOME/.R/.

我的 Makevars 基于 this GitHub gist .我从这里更改了 LDFLAGS:

LDFLAGS+=-L$(HO)/llvm/lib -Wl,-rpath,$(HO)/llvm/lib

为此:

LDFLAGS+=-L$(HO)/llvm/lib -Wl,-rpath,$(HO)/llvm/lib -mlinker-version=305

这解决了从源代码编译 mgcv 时的 ld 错误。

对于 igraph 包,将 mlinker 标志添加到 LDFLAGS 是不够的;它也必须添加到 C++ 标志中。在上面的要点 Makevars 中,这是通过将 -mlinker-version=305 添加到 STD_FLAGS 来完成的,然后将标志添加到 CXX**FLAGS 适用于所有 C++ 版本。

更新,2020 年 6 月 24 日:不幸的是,一些包(在我的例子中是 rJava)无法使用 STD_FLAGS。我的解决方法是将 mlinker 标志放在 C 编译器调用中:

CC=$(CCACHE) $(HO)/llvm/bin/clang -mlinker-version=305

关于r - ld:未知选项:-platform_version 从源构建 R 包时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61103104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com