GFortran错误:ld:尝试编译时找不到-lSystem的库

时间:2019-05-15 19:38:45

标签: xcode macos gcc fortran gfortran

当尝试使用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来确认这一点,该终端返回:

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

我尝试以不同的方式进行编译,并且还尝试按照https://gcc.gnu.org/wiki/GFortranBinaries32Linux所述在.bash_profile中设置LD_LIBRARY_PATH,但仍然遇到相同的错误。 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

如何解决似乎已正确安装所有东西的问题?

任何帮助将不胜感激!

7 个答案:

答案 0 :(得分:9)

在 macOS Big Sur v11.1 上:

相关 SO 帖子: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"

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

答案 1 :(得分:3)

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

它自己解决了

brew reinstall gcc
brew reinstall gfortran

答案 2 :(得分:2)

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

brew install gcc

这解决了问题。

答案 3 :(得分:1)

更新:我尝试了建议,并使用自制软件从gcc软件包安装了gfortran构建,这为我提供了更高版本的gfortran,并且我的问题已解决!

答案 4 :(得分:1)

对于那些使用 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 的 SDK。我将 MacOSX.sdk 的软链接更改为指向 Catalina 版本。

答案 5 :(得分:0)

我最近有这个

ld: library not found for -lSystem
将Mac OS从v10升级到v11(大苏尔)后出现

问题。我正在使用Xcode 12.3,并且已经使用brew install gcc安装了gfortran 10.2.0。尝试brew reinstall gcc后,我仍然看到错误。我可以使用以下方法解决问题:

brew install gfortran

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

答案 6 :(得分:0)

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

brew reinstall gcc
brew reinstall gfortran