Объектные файлы в R-пакете слишком велики (Rcpp)

Я использую Rcpp для интеграции кода C ++ в R-пакет. После компиляции я вижу, что файлы * .o огромны (~ 2 МБ), а исходные файлы * .cpp и * .h — всего ~ 20 КБ. Откуда эта разница? Ранее я реализовывал аналогичную функциональность без Rcpp и файлов * .o, которые были не такими большими. С этим размером файла мой пакет превышает разрешенные 4Mb от check ().

3

Решение

Как указано в ответе на этот вопрос, Есть несколько причин, почему скомпилированный объект C ++ может быть таким большим. В случае Rcpp, вероятная причина как Дирк Эддельбюттель пишет в этом посте общие библиотеки.

Я предлагаю следовать за комментарием @coatless и создать файл Makevars внутри пакета package/src (вы можете скопировать те из rcopulib пакет), чтобы указать параметры компилятора для общих библиотек (те, .h это может быть вызвано несколько раз).

Или вы можете скопировать следующий код для ваших Makevars:

strippedLib: $(SHLIB)
if test -e "/usr/bin/strip" & test -e "/bin/uname" & [[ `uname` == "Linux" ]] ; then /usr/bin/strip --strip-debug $(SHLIB); fi
.phony: strippedLib

как ответ Дирка имеет проблемы с OSX как уже упоминалось в этой дискуссии.

В качестве дополнительного примечания:

Будьте осторожны с таблицами и пробелами в Макеварах (они имею в виду что-то). Конкретно, во второй строке 2 вкладки (не пробелы).

0

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

Других решений пока нет …

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