Сборка пакетов 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 /? Р>
Решение
Это не так хорошо задокументировано (например, мне не удалось найти его ни в '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, чтобы включить каталог в новый НКА.
Например, в вашем случае .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 дублируется, появляется дважды).