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

问题描述 投票:0回答:10

尝试使用 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

在一切似乎都已正确安装的情况下,我该如何解决这个问题?

任何帮助将不胜感激!

xcode macos gcc fortran gfortran
10个回答
25
投票

在 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"

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


10
投票

我将此添加到我的

~/.profile

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

而且它有效。


4
投票

我还要插话(2020 年 12 月 19 日),我刚刚从 MacOS Mojave 更新到 Catalina,突然收到此错误。

它自行解决了

brew reinstall gcc
brew reinstall gfortran

2
投票

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


1
投票

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

brew install gcc

问题就解决了。


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 版本。


1
投票

只需将此行放在 .zshrc 的末尾:

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

并再次运行我的 Fortran 代码进行编译 – 成功! -lSystem 的问题已在我的 macOS 系统中得到解决。


0
投票

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

brew reinstall gcc
brew reinstall gfortran

0
投票

我跳入这个旧线程是因为我面临着一个非常相似的问题。我使用的是配备 M1 Max 处理器的 MacBook Pro、Sonoma 14.1.2 作为操作系统以及 Homebrew 的 gcc 和 gfortran(几分钟前重新安装)。我能够解决编译过程中的几个问题,但现在出现以下错误

ld: library 'System' not found

collect2: error: ld returned 1 exit status

我尝试将

LD_LIBRARY_PATH="/usr/local/Cellar/gcc/13.2.0/lib/gcc/current/"
添加到 PATH 环境变量,但没有成功。我认为collect2指向 /usr/lib/libiconv.2.dylib/usr/lib/libSystem.B.dylib 不在那个地方,但我不知道如何解决这个问题。有什么想法吗?


-1
投票

我最近有这个

ld: library not found for -lSystem

Mac OS 从 v10 升级到 v11 (Big Sur) 后出现问题。我正在使用

Xcode 12.3
并使用
brew install gcc
安装
gfortran 10.2.0
。尝试后我仍然看到错误
brew reinstall gcc
。我能够使用以下方法解决问题:

brew install gfortran

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

© www.soinside.com 2019 - 2024. All rights reserved.