RccpGSL, установка/использование GSL из R в Windows 7

Я привык к R, но я совсем новичок в C++. Мне трудно установить GSL, чтобы использовать его с RcppGSL в R, чтобы улучшить пакет, содержащий код C++. Я скачал последнюю версию GSL, распаковал ее в C:/GSL, установил переменную среды LIB_GSL в C:/GSL, а переменную PATHвC:/GSL/bin.

Как я уже сказал, я хочу усовершенствовать существующий пакет. Я разветвил и вытащил последнюю версию рассматриваемого пакета из github. Моя основная цель — просто иметь возможность использовать и улучшать пакет. Однако, когда я пытаюсь сделать исходный пакет из исходных файлов, я получаю следующую ошибку:

Installing to library 'C:/Users/Simon/Documents/R/win-library/3.1'
* installing *source* package 'Rflim' ...
** libs
g++ -m64 -I"C:/PROGRA~1/R/R-31~1.2/include" -DNDEBUG    -I"C:/Users/Simon/Documents/R/win-library/3.1/Rcpp/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include"  -IC:/Users/Simon/Documents/R/win-library/3.1/Rcpp/include -I/usr/local/include -I C:/Users/Simon/Documents/R/win-library/3.1/RcppGSL/include   -O2 -Wall  -mtune=core2 -c flim.cpp -o flim.o
In file included from C:/Users/Simon/Documents/R/win-library/3.1/RcppGSL/include/RcppGSL.h:23:0,
                 from flim.cpp:1:
C:/Users/Simon/Documents/R/win-library/3.1/RcppGSL/include/RcppGSLForward.h:26:29: fatal error: gsl/gsl_vector.h: No such file or directory
compilation terminated.
make: *** [flim.o] Error 1
Warnung: Ausf�hrung von Kommando 'make -f "Makevars" -f "C:/PROGRA~1/R/R-31~1.2/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-31~1.2/share/make/winshlib.mk" SHLIB_LDFLAGS='$(SHLIB_CXXLDFLAGS)' SHLIB_LD='$(SHLIB_CXXLD)' SHLIB="Rflim.dll" WIN=64 TCLBIN=64 OBJECTS="flim.o"' ergab Status 2
ERROR: compilation failed for package 'Rflim'
* removing 'C:/Users/Simon/Documents/R/win-library/3.1/Rflim'

Exited with status 1.

Извините, здесь есть пара слов на немецком: Warnung: Ausf�hrung von Kommando==Warning:executing command

Я понимаю, что R пытается получить доступ к библиотеке GSL через путь RcppGSL. Это правильно? Не следует ли вместо этого перейти непосредственно к C:/GSL? Я также понял, что R пытается перейти по путям как из Rcpp, так и из RcppGSL, и я не понимаю, почему...

Буду признателен за разъяснения или предложения по решению проблемы.

Спасибо!!!


person Simon Stuber    schedule 31.03.2015    source источник
comment
sry .. должен был прочитать сообщение об ошибке.   -  person Ueli Hofstetter    schedule 31.03.2015
comment
Можете ли вы найти заголовочные файлы gsl (например, gsl_vector.h) в вашей системе?   -  person Ueli Hofstetter    schedule 31.03.2015
comment
Да, они здесь: C:\GSL\include\gsl   -  person Simon Stuber    schedule 31.03.2015
comment
Я предполагаю, что проблема в том, что файл make был написан для Linux-бокса, включает файлы заголовков в /usr/local/include с использованием -I /usr/local/include ... но в вашем случае я думаю, что у вас должно быть что-то вроде -IC:\GSL\include\. Так что я думаю, вы можете либо настроить файл make, либо добавить заголовки gsl в один из каталогов Windows, которые уже включены (например, C:/Users/Simon/Documents/R/win-library/3.1/RcppGSL/include/). ... (Отказ от ответственности: я ни в коем случае не являюсь экспертом по созданию пакетов R)   -  person Ueli Hofstetter    schedule 31.03.2015


Ответы (1)


Пожалуйста, установите предварительную версию GSL для R в Windows с сайта поддержки, предоставленного проф. Рипли, а затем соответствующим образом установите эти значения в src/Makevars.win

## This assumes that the LIB_GSL variable points to working GSL libraries
PKG_CPPFLAGS=-I$(LIB_GSL)/include -I../inst/include
PKG_LIBS=-L$(LIB_GSL)/lib -lgsl -lgslcblas 

либо напрямую, либо установить LIB_GSL соответственно.

Вот как CRAN строит пакет, и это, очевидно, работает.

person Dirk Eddelbuettel    schedule 31.03.2015
comment
Большое спасибо за ответ. Я не сомневаюсь, что это способ сделать это, но как новичок я все еще не уверен, как правильно использовать файл makevars. Однако изначально в src нет файла makevars.win. только makevars file tpe saver box - person Simon Stuber; 01.04.2015
comment
С помощью Дирка мне удалось установить GSL. Пример RcppGSL работает. Хитрость заключалась в том, чтобы скопировать все файлы из C:/local320/lib/x64 в C:/local320/lib. Остальное, как упомянул Дирк. - person Simon Stuber; 02.04.2015
comment
Пакет, который я пытался установить, как упоминалось в исходном вопросе, все еще не работает. Но это не похоже на проблему GSL....? - person Simon Stuber; 02.04.2015