GFortran error: ld: library not found for -lSystem when trying to compile

GFortran error: ld: library not found for -lSystem when trying to compile

我在尝试使用 gfortran 编译一个简单的 fortran-90 文件时遇到了一个奇怪的错误。我正在使用 macOS mojave 系统。我安装了 gfortran 8.2.0,并通过执行以下操作来确保这一点:

Input: gfortran --version
Output: GNU Fortran (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A 
PARTICULAR PURPOSE.

这表明 gfortran 安装正确,我还通过简单地在终端中输入 gfortran 来确认这一点,returns:

gfortran: fatal error: no input files
compilation terminated.

但是,当我尝试像这样编译我的文件时:

gfortran hello.f90 -o hello.x

我收到一条错误消息:

ld: library not found for -lSystem
collect2: error: ld returned 1 exit status

我试过用不同的方式编译,我也试过在 .bash_profile 中设置 LD_LIBRARY_PATH,如 https://gcc.gnu.org/wiki/GFortranBinaries32Linux 所述,但我仍然遇到同样的错误。 gfortran 目录的路径名:/usr/local/gfortran,但是可以在 /usr/local/bin

中找到另一个不是目录的 gfortran

键入:

which gfortran

输出:

/usr/local/bin/gfortran

以及这个目录的长列表搜索:

Input: ls -l /usr/local/bin/gfortran
Output: lrwxr-xr-x  1 root  wheel  32 15 May 14:07 
/usr/local/bin/gfortran -> /usr/local/gfortran/bin/gfortran

我怎样才能解决这个似乎一切都已正确安装的问题?

如有任何帮助,我们将不胜感激!

更新:我尝试了建议并使用 homebrew 从 gcc 包安装了 gfortran 版本,这给了我一个更新版本的 gfortran,我的问题得到了解决!

我遇到了同样的问题,但是使用自制软件从 gcc 包安装 gfortran build 没有帮助。相反,我使用自制软件安装了整个 gcc:

brew install gcc

问题就解决了。

我最近有这个

ld: library not found for -lSystem

从 v10 Mac OS 升级到 v11 (Big Sur) 后出现问题。我使用 Xcode 12.3 并使用 brew install gcc 安装 gfortran 10.2.0。尝试 brew reinstall gcc 后我仍然看到错误。我能够使用以下方法解决问题:

brew install gfortran

但我不知道为什么会这样。

我还要补充一下(2020 年 12 月 19 日),我刚刚从 MacOS Mojave 更新到 Catalina,突然出现此错误。

它自行解决了

brew reinstall gcc
brew reinstall gfortran

在 macOS Big Sur v11.1 上:

相关SO post:https://apple.stackexchange.com/questions/408999/gfortran-compiler-error-on-mac-os-big-sur

修复方法是将 stdlib 添加到您的 $LIBRARY_PATH。由于某种原因,它在 11.1 上不再属于您的标准 $PATH

export LIBRARY_PATH="$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib"

(或将其添加到登录文件并重新启动终端)。

我遇到了这个问题,我尝试了很多方法来解决这个问题,但只有使用这些“两个”命令才能解决它:

brew reinstall gcc
brew reinstall gfortran

对于使用 MacPorts 的用户。

# Installed `gcc8` and `gcc_select`
sudo port install gcc_select gcc8

# then to create "gfortran" softlink to "gfortran-mp-8"
sudo port select --set gcc gcc8

# and added to my .profile
export LIBRARY_PATH="$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib"

我做了 ls -l /Library/Developer/CommandLineTools/SDKs/,发现 Xcode 已经为 Catalina 安装了一个 SDK,为 Big Sur 安装了一个。我将 MacOSX.sdk 的软 link 更改为指向 Catalina 版本。

刚刚将这一行放在 .zshrc 的末尾:

export LIBRARY_PATH="$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib"

和运行我的Fort运行代码再次编译——成功! -lSystem 的问题在我的 macOS 系统中已经解决了。

我将此添加到我的 ~/.profile:

export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
export LIBRARY_PATH="$SDKROOT/usr/lib"

而且有效。