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

StackOverflow https://stackoverflow.com/questions/1616983

  •  06-07-2019
  •  | 
  •  

Вопрос

Системы, с которыми я работаю, имеют 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 дублируется, появляется дважды).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top