问题描述
我正在尝试安装包lars。 Ubuntu 11.04 Natty 64位。从建筑物我得到:
* 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.2
sudo ldconfig -v
给出错误
/sbin/ldconfig.real: Cannot stat /usr/lib/libgfortran.so: No such file or directory
我已经删除并重新安装了gfortran。我需要解决这个问题?
最佳解决方法
对于Debian /Ubuntu系列,我们通常建议
$ sudo apt-get install r-base-dev
因为它提取了编译所需的所有包。并且这种方法一直在进行测试,因为自动化包构建器依赖于此(以及额外的per-package Build-Depends)。此处也列出了gfortran
包;也许你之前安装的链接断了,所以我也试试dpkg --purge gfortran; apt-get install gfortran
。也就是说,几十个R包(和R本身)使用Fortran所以这里不应该有任何魔法。
次佳解决方法
尝试在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修复了我的附加错误。
第三种解决方法
看起来其他建议已经解决了你的问题,但你的问题也适用于我,但解决方案在我的情况下是不同的。我的问题是我的gcc和g ++版本与我的gfortran版本不同。我使用以下内容来切换它们以便它们都是一样的。
-
检查您拥有的gcc,g ++和gfortran的版本:
g++ --version gcc --version gfortran --version
-
匹配它们以便它们都是相同的:
sudo update-alternatives --config g++ sudo update-alternatives --config gcc sudo update-alternatives --config gfortran
就我而言,我只有一个版本的gfortran所以我只是改变了g ++和gcc版本以匹配gfortran。
第四种方法
在ubuntu 12.04,R3.1.0。上安装R package minqa同样的问题,x86 32位(实际上它是插入包安装的一部分)。
解决了
sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
r-base-dev重新安装不起作用,我没有尝试re-install gfortran,因为所有的依赖项。
根据系统/版本,
ls -l /usr/lib/libgfortran.so
检查链接是否存在/是否正确。
第五种方法
我使用Centos而我无法获得r-base-dev。我还安装了gfortran,它的版本与gcc和g ++相匹配;它仍然无法正常工作。但是,我通过使用创建~/.R/Makevars
解决了这个问题
cd ~
mkdir .R
touch Makevars
我找到了我安装gfortran的目录(显然问题是R找不到它)
which gfortran
它说我在usr/bin/gfortran
中安装了gfortran。然后我向.R/Makevars
添加了标志,告诉R使用:
F77 = /usr/bin/gfortran
FC = $F77
FLIBS = -L/usr/bin/gfortran
您可以这样编辑Makevars文件:
vi .R/Makevars
现在您已进入可以编辑文本文件的vi
程序。键入i
进行编辑;您将在终端窗口的底部看到INSERT
。然后你可以输入我上面提到的内容。要保存更改并退出vi
,请按esc键,然后键入:wq
。
我不完全确定我是否正确放置了FLIBS线,因为它与MacOS非常不同。在MacOS中,gfortran下有一个目录,其中包含要链接的库,但显然gfortran
不是linux中的目录。至少这对我有用,也解决了/usr/bin/ld: cannot find -lquadmath
的问题,所以我安装了需要gfortran的R包。