Я пытаюсь скомпилировать примеры в стандартном репозитории примеров пакета RInside. Я уже пытался запустить Makefile, который уже был в репозитории, но это не сработало. До сих пор я столкнулся с несколькими ошибками, некоторые из которых уже устранены. Проблема в том, что каждый раз, когда я исправляю ошибку, происходит одно из двух: появляется новая ошибка или снова появляется старая. Это код разных make-файлов с соответствующей ошибкой:
1) Makefile без -L
all:
g++ -I/usr/share/R/include -I/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include -I/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/RInside/include rinsidetest.cpp
как и ожидалось, применение make к этому файлу возвращает ошибки о неопределенных ссылках на RInside::'s
undefined reference to `RInside::RInside(int, char const* const*, bool, bool, bool)'
2) Makefile со ссылками -L
all:
g++ -I/usr/share/R/include -I/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/include -I/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/RInside/include -L/usr/lib/R/site-library/RInside/lib -L/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs -lRInside -lRcpp -L/usr/lib/R/lib -lR -Wl,-rpath,/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/Rcpp/libs -lRInside -Wl,-rpath,/home/manuel/R/x86_64-pc-linux-gnu-library/3.4/RInside/lib rinsidetest.cpp
Ошибка была такая:
/usr/bin/ld: cannot find -lRcpp
оказалось, что файл .so в репозитории libs назывался Rcpp.so, поэтому я переименовал его в libRcpp.so
и ошибка исчезла.
3)После переименования Rcpp.so
в libRcpp.so
я применил make к тому же makefile из пункта 2) и опять ошибки были про неопределенные ссылки на RInside:::
rinsidetest.cpp:(.text+0x100): undefined reference to `RInside::RInside(int, char const* const*, bool, bool, bool)
4) Применение make к make-файлу, который уже был в папке
make -f Makefile
ошибка (после изменения R_LIBS_USER
на
R_LIBS_USER := "/home/manuel/R/x86_64-pc-linux-gnu-library/3.4"
было:
fatal error: RInside.h: No such file or directory
compilation terminated.
До сих пор я читал более общие вопросы о включении заголовков в C++ и пару вопросов конкретно о RInside, на некоторые из которых ответил Дирк Эддельбюттель, написавший пакет, но все ответы были связаны с использованием компоновщики -L<path>/include
, которые я почти уверен, что использую правильно.
Вот некоторые из вопросов, которые я читал до сих пор:
Компиляция программы RInside с помощью g++ в LinuxКомпиляция программы RInside с помощью g++ в Linux
http://lists.r-forge.r-project.org/pipermail/rcpp-devel/2012-May/003829.html
http://rcpp-devel.r-forge.r-project.narkive.com/A70U2nVw/problem-with-rinside-hello-world-example
Я использую Ubuntu 16.04 с R версии 3.4.4. Любая помощь будет оценена!