找不到 -lgfortran

找不到 -lgfortran

我正在尝试在 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
  1. cd到正确的 gcc 目录(将版本号替换为您的版本号):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. 您可以使用以下命令进行搜索libgfortran.a(可选)。 在我的例子中,它存在于/usr/lib/gcc/x86_64-linux-gnu/4.8/目录中。

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. 创建符号链接:

    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

相关内容