我正在尝试在 R 中安装一个包(包“ks”)。安装失败并显示错误消息:
/usr/bin/ld: cannot find -lgfortran
我已经安装了 Ubuntu 包 build-essential:
sudo apt-get install build-essential
我也尝试过添加符号链接:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/libgfortran.so.3.0.0 /usr/lib/libgfortran.so
sudo ldconfig
我经常使用 gcc 和 g++,但还没有理由使用 gfortran。
我在 gcc-4.7 上看到其他人遇到过这个问题(http://ubuntuforums.org/showthread.php?t=2123821),所以我想知道这是否是由于手动安装 gcc-4.7 造成的。我按照此处接受的答案中的配方操作这里和这里这里。
正在lsb_release -a
打印
Ubuntu 12.04.2 LTS
和连续uname -r
打印
3.2.0-39-通用-pae
有人能提供建议为什么ld
它不起作用吗?
答案1
我所做的是,我在 ubuntu 上检查 g++、gcc 和 gfortran 的版本是否相同。
我想如果拥有三个相同版本的话会更好。
# first check the versions:
gcc --version
g++ --version
gfortran --version
# If versions are different, then install:
sudo apt-get update
apt-get install gcc-4.9 g++-4.9 gfortran-4.9
对我来说,这解决了我在 Ubuntu 上使用 RStudio 在 R 中安装“TTR”包时遇到的所有问题。
如果您进一步遇到该问题gfortran: command not found
,请确保您已/usr/bin/gfortran
链接到您已安装的实际版本gfortran
(例如链接到gfortran-4.9
):
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-11 70
答案2
对 Cloud Oliver 的回答做进一步的解释。
通过此命令找出当前正在使用的gcc版本。
$sudo update-alternatives --config gcc
* 2 /usr/bin/gcc-4.7 60 manual mode
带有 的条目*
表明正在使用哪个版本的 GCC。只需按回车键即可保留当前设置。
如果它打印“没有 gcc 的替代品”,您可能必须使用此命令来找出版本:
apt-cache policy gcc
cd
到正确的 gcc 目录(将版本号替换为您的版本号):cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
您可以使用以下命令进行搜索
libgfortran.a
(可选)。 在我的例子中,它存在于/usr/lib/gcc/x86_64-linux-gnu/4.8/
目录中。find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
创建符号链接:
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
答案3
您需要安装 gfortran。错误指出缺少用于构建时链接的静态库,而不是您尝试调整的动态库。
答案4
解决方案:
cd /usr/lib/gcc/x86_64-linux-gnu/4.6
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a