Параметр ld: unknown: -platform_version при сборке пакетов R из исходного кода - PullRequest
1 голос
/ 08 апреля 2020

Некоторые пакеты R, такие как mgcv, не могут скомпилироваться из исходного кода с помощью clang 10+ (в macOS 10.14 и R версии 3.6+). Ошибка, сообщаемая во время компиляции:

ld: unknown option: -platform_version

Как мне устранить эту ошибку и скомпилировать эти пакеты?

1 Ответ

0 голосов
/ 08 апреля 2020

Проблема с ld такая же, как и в Clang 10 не может связать приложение C ++ с CMake на macOS 10.12 . Однако предложение добавить флаг -DCMAKE_CXX_FLAGS="-mlinker-version=305" не применимо к процессу компиляции пакета R. Для R вам нужно добавить -mlinker-version=305 к LDFLAGS к вашему Makevars файлу, обычно расположенному в $HOME/.R/.

My Makevars основан на этой GitHub гисте . Я изменил 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, что затем добавляет флаг к CXX**FLAGS для всех версий C ++.

...