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

x6h2sr28  于 2022-11-12  发布在  其他
关注(0)|答案(9)|浏览(347)

我在使用gfortran编译一个简单的fortran-90文件时遇到一个奇怪的错误。我在macOS莫哈韦系统上工作。我安装了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_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

我如何修复这个地方的一切似乎是正确的安装?
如有任何帮助,我们将不胜感激!

6ioyuze2

6ioyuze21#

在macOS大苏尔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"

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

idfiyjo8

idfiyjo82#

我也会插话(2020年12月19日),我刚刚从MacOS莫哈韦更新到 Catalina ,突然出现了这个错误。
它解决本身

brew reinstall gcc
brew reinstall gfortran
dzhpxtsq

dzhpxtsq3#

我在我的~/.profile中添加了以下内容:

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

而且很管用。

6ss1mwsb

6ss1mwsb4#

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

rjee0c15

rjee0c155#

我也遇到了同样的问题,但是使用homebrew从gcc包安装gfortran build没有帮助。相反,我使用homebrew安装了整个gcc:
brew install gcc
这就解决了问题。

mznpcxlj

mznpcxlj6#

适用于使用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版本。

gupuwyp2

gupuwyp27#

只需要在.zshrc的末尾放置以下行:

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

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

ivqmmu1c

ivqmmu1c8#

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

brew reinstall gcc
brew reinstall gfortran
qpgpyjmq

qpgpyjmq9#

我最近有一个

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

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

相关问题