web-dev-qa-db-ja.com

ld:不明なオプション:ソースからRパッケージをビルドするときの-platform_version

mgcvなどの特定のRパッケージは、clang 10以降(macOS 10.14およびRバージョン3.6以降)でソースからコンパイルできません。コンパイル中に報告されたエラーは

ld: unknown option: -platform_version

このエラーを解決してこれらのパッケージをコンパイルするにはどうすればよいですか?

3
Paul

ldの問題は Clang 10がC++アプリケーションをmacOS 10.12上のCMakeとリンクできない と同じです。ただし、フラグ-DCMAKE_CXX_FLAGS="-mlinker-version=305"を追加するという提案は、Rパッケージのコンパイルプロセスには適用されません。 Rの場合、-mlinker-version=305からLDFLAGSMakevarsファイルに追加する必要があります。ファイルは通常$HOME/.R/にあります。

私のMakevarsthis 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=305STD_FLAGSに追加することで行われ、すべてのC++バージョンのフラグがCXX**FLAGSに追加されます。

更新、2020年6月24日:残念ながら、一部のパッケージ(私の場合はrJava)がSTD_FLAGSを使用できません。私の回避策は、mlinkerフラグをCコンパイラの呼び出しに配置することでした。

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