我正在尝试安装软件包。 Ubuntu 11.04 Natty 64位。 从build筑物我得到:
* 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 – 版本GNU Fortran(Ubuntu / Linaro 4.5.2-8ubuntu4)4.5.2
sudo ldconfig -v
给出错误
/sbin/ldconfig.real:不能stat /usr/lib/libgfortran.so:没有这样的文件或目录
我已经删除并重新安装gfortran。 我需要什么来解决这个问题?
对于Debian / Ubuntu系列,我们通常会推荐
$ sudo apt-get install r-base-dev
因为它牵涉编译通常需要的所有软件包。 而且这种方法一直在测试,因为自动化的包构建者依赖于这个(以及额外的每个包的构建依赖)。 gfortran
包也列在这里; 也许你有一个从以前的安装断开的链接,所以我也想尝试dpkg --purge gfortran; apt-get install 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。,x86 32位(实际上它是插入程序包安装的一部分)上安装R软件包minqa。
解决
sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
r-base-dev重新安装不起作用,我没有尝试重新安装gfortran,因为所有的依赖关系。
根据系统/版本,
ls -l /usr/lib/libgfortran.so
检查链接是否存在/是否正确。
如果你使用gcc44,你需要:
yum install gcc44-gfortran
为了将来失去灵魂,它也有助于验证编译器版本全部匹配(按照https://askubuntu.com/questions/276892/cannot-find-lgfortran )。 在我的情况下,gcc和gfortran都是4.8.4,但是g ++是4.6。