2011-06-10 120 views
29

我試圖安裝軟件包lars。 Ubuntu 11.04 Natty 64位。從建築,我得到:安裝建築R軟件包出現錯誤「ld:找不到-lgfortran」

* installing *source* package âlarsâ ... 
** libs 
gfortran -fpic -O3 -pipe -g -c delcol.f -o delcol.o 
gcc -shared -o lars.so delcol.o -lgfortran -lm -L/usr/lib64/R/lib -lR 
/usr/bin/ld: cannot find -lgfortran 
collect2: ld returned 1 exit status 
make: *** [lars.so] Error 1 
ERROR: compilation failed for package âlarsâ 

gfortran,當我運行gfortran --version我得到

gfortran --version GNU的Fortran (Ubuntu的/ Linaro的4.5.2-8ubuntu4)4.5 0.2

sudo ldconfig -v給出了錯誤

/sbin/ldconfig.real:無法統計/usr/lib/libgfortran.so:沒有這樣的文件或目錄

我已經刪除並重新安裝gfortran。我需要解決這個問題?

+0

幾個問題: 1)是否真的有文件/usr/lib/libgfortran.so? (如果它是符號鏈接,它指向的文件是否在那裏?) 2)LD_LIBRARY_PATH中是否存在libgfortran.so的位置? – geoffjentry 2011-06-10 06:09:41

+0

我檢查了消息來源。這是一個標準的R,沒有什麼奇怪的關於它的。單FORTRAN文件,所以我假設它是標準的R構建試圖對libgfortran.so – 2011-06-10 14:09:05

回答

23

爲Debian/Ubuntu的家庭,我們通常建議

$ sudo apt-get install r-base-dev 

,因爲它拉動通常所需要的編譯所有的包。隨着自動化軟件包構建者依賴這個方法(以及額外的每個包Build-Depends),這種方法一直得到測試。 gfortran包也在這裏列出;也許你有一個從以前的安裝斷開的鏈接,所以我也會嘗試dpkg --purge gfortran; apt-get install gfortran。也就是說,數十個R包(和R本身)使用Fortran,所以這裏不應該有任何魔法。

+1

德克,鏈接通常是你的建議是現貨,但一些有趣的是這裏的配置回事。在這個問題中,我展示了構建消息。 gfortran被發現並用於成功編譯delcol.f,但後來再次鏈接gfortran,它找不到。 – 2011-06-10 14:05:00

+1

你是否偶然弄亂了不同'gcc- *','g ++ - *'和'gfortran- *'版本和/或它們的庫等價物之間的符號鏈接? 「有趣的東西」有時是簡單的操作錯誤。在我的機器上,'libgfortran.so.3'位於'/ usr/lib/x86_64-linux-gnu /'中,來​​自'libgfortran3'軟件包。 – 2011-06-10 14:11:32

+6

是的,我的是一樣的。鏈接/usr/lib/libgfortran.so存在問題,只要指向/usr/lib/x86_64-linux-gnu/libfortran.so.3.0.0,就可以再次運行。 – 2011-06-10 16:33:13

45

我在嘗試在Ubuntu 12.10 64bit上安裝CRAN軟件包VGAM時遇到了同樣的問題。我已經安裝了r-base-dev,但是Andrew Redd對Dirk Eddelbuettel的答案的第二個評論對我很有幫助。

具體來說,我得到兩個錯誤:

/usr/bin/ld: cannot find -lgfortran 
/usr/bin/ld: cannot find -lquadmath 

其中固定用線:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so 
sudo ln -s /usr/lib/x86_64-linux-gnu/libquadmath.so.0 /usr/lib/libquadmath.so 

請注意,只有第一行是必要的照顧問題,從原來的帖子。第二行用lquadmath修正了我的額外錯誤。

+2

爲我工作。謝謝。 – 2013-09-30 16:36:48

+0

在我看來,在Ubuntu 13.10上缺少libgfortran3-dev;有更新版本的軟件包,但對於R(來自官方的Ubuntu軟件包),似乎需要鏈接到libgfortran.so.3。換句話說,我只是將它與這個手動符號鏈接解決方案一起工作,因爲安裝r-base-dev(以及gfortran包)並不足夠。 – 2013-12-05 17:03:53

+0

也爲我工作,謝謝! – fabians 2014-12-01 13:20:52

6

在Ubuntu 12.04,R3.1.0,x86 32位(實際上它是插入式安裝包的一部分)上安裝R軟件包minqa的同樣的問題。

解決了

sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so 

R基本開發重裝沒有工作,我沒有嘗試重新安裝gfortran,因爲所有的依賴關係。

根據系統/版本,該鏈接存在

ls -l /usr/lib/libgfortran.so 

檢查/是正確的。

+0

與包igraph相同的故事在debian上。 – fabians 2014-12-01 13:22:06

0

如果您正在使用gcc44,你將需要:

yum install gcc44-gfortran 
9

它看起來像其他的建議已經解決你的問題,但你的問題也適用於我,但該解決方案是在我的情況不同。我的問題是我的gcc和g ++版本與我的gfortran版本不同。我用下面的方式切換它們,使它們都一樣。

  1. 檢查什麼的gcc版本,g ++以及gfortran您有:

    g++ --version 
    gcc --version 
    gfortran --version 
    
  2. 比賽他們,使他們都是一樣的:

    sudo update-alternatives --config g++ 
    sudo update-alternatives --config gcc 
    sudo update-alternatives --config gfortran 
    

在我案例中,我只有一個版本的gfortran,所以我只是改變了g ++和gcc版本以匹配gfortran。

+0

請注意*精確*匹配可能不是必需的:將'gcc'設置爲5.4.1使其適用於'gfortran' 6.2.0。 – Evpok 2017-02-14 08:59:52

相關問題