mgcv
などの特定のRパッケージは、clang 10以降(macOS 10.14およびRバージョン3.6以降)でソースからコンパイルできません。コンパイル中に報告されたエラーは
ld: unknown option: -platform_version
このエラーを解決してこれらのパッケージをコンパイルするにはどうすればよいですか?
ld
の問題は Clang 10がC++アプリケーションをmacOS 10.12上のCMakeとリンクできない と同じです。ただし、フラグ-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
ソースからld
をコンパイルするときのmgcv
エラーが解決されました。
igraph
パッケージの場合、mlinker
フラグをLDFLAGS
に追加するだけでは不十分でした。 C++フラグにも追加する必要がありました。上記のGist Makevars
では、これは-mlinker-version=305
をSTD_FLAGS
に追加することで行われ、すべてのC++バージョンのフラグがCXX**FLAGS
に追加されます。
更新、2020年6月24日:残念ながら、一部のパッケージ(私の場合はrJava)がSTD_FLAGS
を使用できません。私の回避策は、mlinkerフラグをCコンパイラの呼び出しに配置することでした。
CC=$(CCACHE) $(HO)/llvm/bin/clang -mlinker-version=305