Я создаю пакет R, называемый CVOC. Он включает в себя код на C++ и использует арифметику высокой точности из библиотеки g c.Ошибка при создании R-пакета: ошибка в dyn.load (файл, DLLpath = DLLpath, ...)
Пакет должен быть создан с помощью следующих шагов:
1) с использованием Rcpp :: Rcpp.package.skeleton создать пакет скелет.
2) копирует необходимые файлы, такие как описание, NAMESPACE, Makevars и т.д., в правильные папки
3) создание файлов документации .Rd с использованием roxygen2 :: roxygenise()
4) проверка R-пакет с помощью R CMD проверить
5) создание R-пакет с помощью R CMD построить
Когда я бегу R CMD проверить "CVOC" следующее сообщение об ошибке появляется:
* installing *source* package ‘CVOC’ ...
** libs
g++ -std=c++11 -I/usr/share/R/include -DNDEBUG -I"/home/fabian/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/include" -I"/home/fabian/R/x86_64-pc-linux-gnu-library/3.2/RcppMP/include" -I"/home/fabian/R/x86_64-pc-linux-gnu-library/3.2/BH/include" -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c RcppExports.cpp -o RcppExports.o
g++ -std=c++11 -I/usr/share/R/include -DNDEBUG -I"/home/fabian/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/include" -I"/home/fabian/R/x86_64-pc-linux-gnu-library/3.2/RcppMP/include" -I"/home/fabian/R/x86_64-pc-linux-gnu-library/3.2/BH/include" -fpic -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g -c etcND.cpp -o etcND.o
g++ -std=c++11 -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o CVOC.so RcppExports.o etcND.o -L/usr/lib/R/lib -lR
installing to /home/fabian/Desktop/CVOCcreate/CVOC.Rcheck/CVOC/libs
** R
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object '/home/fabian/Desktop/CVOCcreat/CVOC.Rcheck /CVOC/libs/CVOC.so':
/home/fabian/Desktop/CVOCcreate/CVOC.Rcheck/CVOC/libs/CVOC.so:
undefined symbol: __gmp_bits_per_limb
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/fabian/Desktop/CVOCcreate/CVOC.Rcheck/CVOC’
Все необходимые файлы, включая скрипт bash createCVOC.sh, можно найти в репозитории github по адресу https://github.com/SchroederFabian/CVOC.
Любая помощь очень ценится.
Благодарим за указание этого. Я изменил строку в файле Makevars на PKG_LIBS = -lgmpxx -lgmp, как вы сказали, но независимо от того, что я делаю, флаги в журнале не меняются. Появится такая же ошибка «неизвестный символ». – fabianschroeder
Ваш комментарий заставил меня понять, что я скопировал файл Makevars в корневую папку вместо папки src. Кажется, теперь это работает. Спасибо! – fabianschroeder
Что вы делаете в этом репо GitHub кажется ... необычным. Нет причин повторно запускать функцию скелета каждый раз или копировать файлы. Просто создайте правильный макет и сделайте это. Посмотрите на множество других репозиториев и на то, как они это делают. Кроме того, если ответ поможет, пожалуйста, не стесняйтесь его принять (нажав на отметку «галочка», которую вы видите). –