Xcode GFortran错误:尝试编译时未找到-lSystem的ld:library

Xcode GFortran错误:尝试编译时未找到-lSystem的ld:library,xcode,macos,gcc,fortran,gfortran,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 f

当我试图用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
我尝试过以不同的方式编译,也尝试过在.bash_配置文件中设置LD_LIBRARY_路径,如所述,但仍然出现相同的错误。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
在似乎所有设备都已正确安装的情况下,如何修复此问题


任何帮助都将不胜感激

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

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

brew安装gcc

这就解决了问题。

我最近有这个

ld: library not found for -lSystem
将Mac OS从v10升级到v11(大苏尔)后出现问题。我使用的是
Xcode 12.3
,我使用
brew安装gcc
安装
gfortran 10.2.0
。在尝试
brew重新安装gcc
后,我仍然看到错误。我能够使用以下方法解决问题:

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

我也会插话(2020年12月19日),我刚从MacOS Mojave更新到Catalina,突然出现了这个错误

这件事解决了

brew重新安装gcc
brew重新安装gfortran

在macOS Big Sur v11.1上:

相关SO职位:

修复方法是将stdlib添加到
$LIBRARY\u路径中。出于某种原因,它不再出现在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安装了一个SDK。我更改了MacOSX.sdk的软链接,指向Catalina版本。

是否安装了xcode命令行工具?根据gfortran二进制文件的不同,这些文件可能是工作所必需的。您可能还想使用自制版本,这些版本是最新的。@janneb我确实为xcode安装了命令行工具,我在另一个apple安装程序上尝试了自制版本,出现了相同的问题,但我可以在这台计算机上尝试。我遇到了相同的问题。但是,当我运行
brew重新安装gfortran
时,它只需重新安装
gcc
10.2.0,因此问题(
ld:library not found for-lSystem
)仍然存在。有什么建议吗?你能告诉我吗?什么是stdlib和$LIBRARY\u路径?特别是,在哪里运行您共享的代码段?谢谢!>“什么是stdlib”大约在亚里士多德时期,程序员们对自己说“嗯,我们似乎在一遍又一遍地编写相同的基本代码,也许我们应该将其标准化”。于是,stdlib诞生了。它包含所有基本的构建块,如内存分配、随机数生成器、字符串到X的转换、进程和系统控制,甚至一些基本的排序例程。它对几乎所有现存的程序都是必不可少的。>$LIBRARY\u PATH[注意:
$LIBRARY\u PATH
仅适用于gcc!]您的计算机是一个大垃圾箱,但不知何故,为编译器和链接器工作的魔法精灵确切地知道在哪里查找
myBoolLib。因此
可以使用
bool invertBoolean(bool-in)。他们怎么知道去哪里找?您可以在每次编译时精确地告诉他们应该在哪里查找,但这很繁琐。因此,您声明了本质上是一个系统范围的变量,它列出了前面提到的精灵在编译时应该查看的一系列位置。>“我在哪里运行您共享的代码段?”来自命令行,但请注意,您每次都必须这样做。或者,您可以将其放入“登录文件”中,假设您使用的bash是
~/.bash\u profile
和/或
~/.bashrc
。每次打开新终端时都会运行这些文件,并作为一种“自定义”文件。如果将上述代码粘贴到其中一个中,则每当创建新的终端实例时,它都会自动神奇地执行。这不是修复方法。(当然,这会让你得到一个工作的gfortran,但不会回答问题)