Как избежать "не могу найти -lR" для установки пакета R на windows - PullRequest
5 голосов
/ 13 января 2020

Я хочу установить пакеты из источника:

Установка переменных среды:

Sys.setenv(BINPREF = "C:/PROGRA~1/R/Rtools/mingw_64/bin/")
Sys.setenv(BINPREF64 = "C:/PROGRA~1/R/Rtools/mingw_64/bin/")
Sys.setenv(PATH = "C:/PROGRA~1/R/R-3.4.2/bin/x64/;C:/PROGRA~1/R/Rtools/bin/;C:/PROGRA~1/R/Rtools/mingw_64/bin/")

Установка любого пакета из источника приводит к ошибке «not find -lR»:

install.packages("later")

Сообщение об ошибке:

C:/PROGRA~1/R/Rtools/mingw_64/bin/g++ -shared -s -static-libgcc -o
later.dll tmp.def RcppExports.o callback_registry.o debug.o init.o
later.o later_posix.o later_win32.o timer_posix.o timestamp_unix.o
timestamp_win32.o tinycthread.o
-Ld:/Compiler/gcc-4.9.3/local330/lib/i386 -Ld:/Compiler/gcc-4.9.3/local330/lib -LC:/PROGRA~1/R/R-34~1.2/bin/i386 -lR C:/PROGRA~1/R/Rtools/mingw_64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.3/../../../../x86_64-w64-mingw32/bin/ld.exe:
skipping incompatible C:/PROGRA~1/R/R-34~1.2/bin/i386/R.dll when searching for -lR
C:/PROGRA~1/R/Rtools/mingw_64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.3/../../../../x86_64-w64-mingw32/bin/ld.exe:
skipping incompatible C:/PROGRA~1/R/R-34~1.2/bin/i386/R.dll when searching for -lR
C:/PROGRA~1/R/Rtools/mingw_64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.3/../../../../x86_64-w64-mingw32/bin/ld.exe:
cannot find -lR collect2.exe: error: ld returned 1 exit status no DLL
was created
ERROR: compilation failed for package 'later'

Как указано здесь: https://community.rstudio.com/t/installing-source-package-failure-to-link/14775, возможно, по какой-то причине 32-разрядный файл связан на моей 64-битной машине. Но я не вижу ошибок в моих путях. (В прошлом установка из источника работала хорошо).

Sys.info()
             sysname              release              version             nodename              machine                login                 user       effective_user 
           "Windows" "Server >= 2012 x64"         "build 9200"         "YY"             "x86-64"            "XX"            "XX"            "XX" 

Информация о сеансе:

Version:1.0 StartHTML:0000000107 EndHTML:0000001240 StartFragment:0000000127 EndFragment:0000001222
sessionInfo() R version 3.4.2 (2017-09-28) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows Server >= 2012 x64 (build 9200)

Rstudio 1.1.383

Также размещено здесь: https://community.rstudio.com/t/how-to-avoid-cannot-find-lr-for-r-package-installation-on-windows/49425.

Связанный:

Ответы [ 3 ]

1 голос
/ 13 февраля 2020

Вы делаете три ошибки:

  1. Вы не должны устанавливать rtools под program files или любым другим путем с пробелом.
  2. Вы используете BINPREF неправильно, из-за чего 64-битный набор инструментов будет использоваться на 32-битном.
  3. Mingw g cc dirs должен , а не be на пути. Только bin dir (bash и make) должны быть.

Рекомендуемая настройка:

Это Настоятельно рекомендуется для установки rtools в папку по умолчанию C:\Rtools\. Это единственная конфигурация, которая широко тестируется.

В этом случае вам нужно только сделать, чтобы put C:\Rtools\bin находился в переменной PATH для компиляции пакетов. R автоматически использует правильные компиляторы на 32-битных и 64-битных системах.

При расположении Rtools не по умолчанию:

Если вам действительно нужно установить rtools в нестандартном месте, вы можете установить BINPREF к шаблону, который включает $(WIN), который расширяется до правильного пути, например, так:

Sys.setenv(BINPREF="C:/YourRtoolsPath/mingw_$(WIN)/bin/")

Когда make вызывает компилятор, $(WIN) заменяется либо 32 или 64, который затем должен найти правильный путь к соответствующей цепочке инструментов.

0 голосов
/ 29 января 2020

установка R версия 3.6.2 с rtools35 , затем при установке Rtools35 отметьте «да» при добавлении rtools в системный путь, затем протестируйте с помощью later::later(function() {print("Got here!")}, 5) later package test

0 голосов
/ 22 января 2020

у вас проблема с пропуском R.dll, он не может быть связан.

попробуйте использовать другую версию цепочки инструментов сборки, может быть, Microsoft VC ++ ((link.exe)) или попробуйте mingw32

вы можете скомпилировать любой другой пакет

пожалуйста попробуйте этот тест, чтобы увидеть, есть ли ошибка

ccode <- 'extern "C" {void test() {double x=2.1; x = x+1;}}\n'
cat(file="R_Cpp_Test.cpp", ccode)
system("R CMD SHLIB R_Cpp_Test.cpp")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...