Сборка пакетов R с использованием альтернативного GCC - PullRequest
21 голосов
/ 24 октября 2009

Системы, с которыми я работаю, имеют 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 ]

34 голосов
/ 24 октября 2009

Это не так хорошо задокументировано (например, мне не удалось найти его ни в '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/.

3 голосов
/ 31 января 2017

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

Для меня работало определение каталога проекта (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: другие пути

0 голосов
/ 24 октября 2009

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

PATH=/usr/bin:${PATH}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...