Сборка пакетов R с использованием альтернативного GCC

Системы, с которыми я работаю, имеют GCC 4.5 (экспериментальный) в / usr / local / bin / gcc, что оказалось проблематичным для некоторых пакетов R. Я хотел бы вместо этого использовать систему GCC в / usr / bin / gcc.

Я попытался установить CC и CXX в файлах конфигурации Bash (.bashrc, .bash_profile и т. Д.), А также в командной строке, но, хотя Bash распознает изменение, R - нет.

Как мне заставить R использовать версию GCC в / usr / bin вместо версии в /usr/local/bin/?

3 ответа

Решение

Это не так хорошо задокументировано (например, мне не удалось найти его ни в "R Extension", ни "R Admin" прямо сейчас), но Брайан Рипли несколько раз упоминал об этом в списках.

Как правило, во время компиляции R настройки регистрируются и сохраняются в $R_HOME/etc/Makeconf, Одна возможность - редактировать этот файл напрямую, но у вас могут не быть привилегии root или вы не захотите влиять на всех остальных пользователей. Так что лучше можно создать

~/.R/Makevars

с записями

CC=gcc-4.4
CXX=g++-4.4

плюс какие-либо флаги выбора и т. д., которые вы хотите установить. Это повлияет на все последующие использования R CMD INSTALL или же R CMD check или... что ты бежишь.

Другие файлы в $R_HOME/etc/ аналогично может быть переопределено локально из ~/.R/,

У меня была очень похожая проблема.

Для меня было полезно определить каталог проекта (rstudio может сделать это за вас), а затем добавить .Renviron файл, который изменяет PATH и LD_LIBRARY_PATH, чтобы включить каталог с новым gcc. В вашем случае, например, .Renviron будет выглядеть примерно так:

LD_LIBRARY_PATH=/usr/local/bin/gcc/lib:/usr/local/bin/gcc/lib64:/usr/local/bin/gcc/libexec:другие пути

PATH=/usr/local/bin/gcc/bin:/usr/local/bin:другие пути

Проверьте ваш путь, чтобы увидеть, находится ли /usr/local/bin перед /usr/bin. Если это так, просто убедитесь, что / usr / bin идет первым:

PATH=/usr/bin:${PATH}

(Это нормально, если дублируется / usr / bin, появляется дважды).

Смотреть на configure.args часть ?install.packages и сравните это с ./configure --help на, например, исходном дереве r.

Вы также можете из bash, CC=clang R CMD INSTALL /path/to/package/source.

HTH

Другие вопросы по тегам