Ошибка внутренней сегментации и проблема компоновки

Я пытаюсь вызвать R из c ++ в Linux через RInside, я скомпилировал R-2.15.1 из исходного кода с gcc версии 4.5.3 (Debian 4.5.3-1), у меня нет прав sudo для использования apt-get установить. Я использую OpenBlas и оптимизированную систему Lapack. Библиотеки blas и lapack прекрасно работают для многих приложений скальпинга

Я установил R с

./configure --with-blas="-I/lib/OpenBLAS-v0.2.3-0/xianyi-OpenBLAS-48f075c/install/include -L/lib/OpenBLAS-v0.2.3-0/xianyi-OpenBLAS-48f075c/install/lib -lopenblas -lgfortran" --with-lapack="/usr/lib/liblapack.so -lgfortran" --enable-BLAS-shlib=yes --enable-R-shlib --enable-R-static-lib --prefix= .

который установлен и работает нормально, я запустил make check без ошибок, также все пакеты (Rcpp и RInside) установлены нормально ..

Однако, когда я использую данный RInside makefile , основной пример Привет из мира /standard/rinside_sample0.cpp компилирует! но он не запускается, и я получаю следующую ошибку

./rinside_sample0: error while loading shared libraries: libRblas.so: cannot open shared object file: No such file or directory

файл libRblas.so существует и находится в R/lib папка,

когда я пытаюсь связать его вручную с помощью команды g ++, создает файл make или связывает его следующим образом, я получаю ошибку сегментации

/R/lib/libRblas.so ./hello_world
Segmentation fault

РЕДАКТИРОВАТЬ: вот как пример файла make пытается скомпилировать пример (который прекрасно компилируется), но не будет работать с отсутствующим выше libRblas.so ошибка

g++ -I/nfs/user03/jimmie21/libs/lib64/R/include -I/nfs/user03/jimmie21/libs/lib64/R/library/Rcpp/include -I/nfs/user03/jimmie21/libs/lib64/R/library/RInside/include -g -O2 -Wall -I/usr/local/include   hello_world.cpp  -L/nfs/user03/jimmie21/libs/lib64/R/lib -lR  -L/nfs/user03/jimmie21/libs/lib64/R/lib -lRblas -L/nfs/user03/jimmie21/libs/lib64/R/lib -lRlapack -L/nfs/user03/jimmie21/libs/lib64/R/lib -lRblas -L/nfs/user03/jimmie21/libs/lib64/R/library/Rcpp/lib -lRcpp -Wl,-rpath,/nfs/user03/jimmie21/libs/lib64/R/library/Rcpp/lib -L/nfs/user03/jimmie21/libs/lib64/R/library/RInside/lib -lRInside -Wl,-rpath,/nfs/user03/jimmie21/libs/lib64/R/library/RInside/lib -o hello_world

0

Решение

Пара вещей:

  1. Воспроизводимые примеры, пожалуйста

  2. У вас нестандартная настройка

  3. С помощью скрипта из 1), попробуйте его в стандартной настройке, так как именно так Rcpp / RInside разрабатывается и тестируется (в Ubuntu / Debian)

  4. Набор тестов Rcpp теперь содержит почти 800 модульных тестов из 350 функций модульных тестов. Это не seg.fault, так что проблема в вашем конце. Точно так же RInside имеет десятки примеров в четырех examples/ подкаталоги. Это тоже работает.

Это может быть так же просто, как настроить файлы Makefile / Makevars, чтобы убедиться, что вы получаете свои библиотеки во всех случаях. Но мы не можем сказать, так как здесь нет ничего воспроизводимого.

редактировать Если вы хотите связаться с libRblas.so тогда у вас есть полностью нестандартная настройка в качестве пакетов R для Debian / Ubuntu, так как используется внешний BLAS. Опять же, не проблема RInside.

3

Другие решения

Я исправил проблему, добавив R путь установки lib ../R/lib: к началу LD_LIBRARY_PATH после этого все примеры скомпилированы и работают нормально

1

По вопросам рекламы [email protected]