2009-10-24 70 views
13

我使用的系統在/ usr/local/bin/gcc中有GCC 4.5(實驗),這對於某些R包已經證明是有問題的。我想在/ usr/bin/gcc中使用系統GCC。使用備用GCC構建R包

我已經嘗試在Bash配置文件(.bashrc,.bash_profile等)以及命令行中設置CC和CXX,但儘管Bash識別出這種變化,但R並沒有。

如何讓R在/ usr/bin中使用GCC版本而不是/ usr/local/bin /中的版本?

回答

20

這沒有很好的記錄(例如,我沒有找到它在'R Extension'或'R Admin'中),但是Brian Ripley在名單上提到了它幾次。

基本上,在R編譯時,設置被註冊並存儲在$ RHOME/etc/Makeconf中。一種可能性是直接編輯該文件,但您可能沒有root權限,或者可能不想影響所有其他用戶。所以,更好的可能是創建

~/.R/Makevars 

的條目

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

加上要設置爲準optmisation標誌等。這將影響您運行的所有後續使用R CMD INSTALLR CMD check或......。

$ RHOME/etc /中的其他文件同樣可以在本地從~/.R/覆蓋。

+0

使用我的配置,某些軟件包需要sudo,所以在這種情況下,有必要修改Makeconf。您的解決方案有效 – 2009-10-29 02:55:34

+2

$ R_HOME是/ usr/lib64/R /用於CentOS6 – zakrapovic 2016-04-12 13:04:37

+1

對於R軟件包(largeViz)的安裝,即使添加了CXX變量,我們也遇到了問題。除此之外,我們必須在Makevars文件中配置CXX11變量。像這樣CXX11 = g ++ 7 – user131476 2017-11-30 04:41:40

0

檢查您的路徑以查看/ usr/local/bin是否在/ usr/bin之前。如果是這樣,只要確保/ usr/bin先來就可以了:

PATH=/usr/bin:${PATH} 

(如果/ usr/bin重複出現兩次沒關係)。

+0

沒有工作: 出口PATH =的/ usr/bin中: $ {PATH} R CMD INSTALL ... 檢查gcc .../usr/local/bin/gcc -std = gnu99 – 2009-10-24 06:22:21

1

我有一個非常類似的問題。

對我來說有效的是定義一個項目目錄(rstudio可以爲你做),然後添加一個修改PATH和LD_LIBRARY_PATH的.Renviron文件,以包含帶有新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:其他路徑