ld:未知选项:从源代码构建R软件包时-platform_version

问题描述 投票:1回答:1

某些R软件包,例如mgcv,无法使用clang 10+从源代码进行编译(在macOS 10.14和R版本3.6+下)。编译期间报告的错误是

ld: unknown option: -platform_version

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

r clang ld
1个回答
0
投票

ld的问题与Clang 10 fails to link C++ application with CMake on macOS 10.12中的问题相同。但是,添加标志-DCMAKE_CXX_FLAGS="-mlinker-version=305"的建议不适用于R包编译过程。对于R,您需要将-mlinker-version=305LDFLAGS添加到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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.