8
votes

I am getting a strange error when trying to compile a simple fortran-90 file using gfortran. I am working on a macOS mojave system. I have gfortran 8.2.0 installed and I checked to be sure of this by doing the following:

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.

Which indicates that gfortran installed correctly and I also confirmed this by typing simply: gfortran, into the terminal, which returns:

gfortran: fatal error: no input files
compilation terminated.

However, when I try to compile my file like so:

gfortran hello.f90 -o hello.x

I get an error which reads:

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

I've tried compiling in different ways and I also tried setting the LD_LIBRARY_PATH in .bash_profile as described by https://gcc.gnu.org/wiki/GFortranBinaries32Linux but I still get the same error. The gfortran directory has the pathname: /usr/local/gfortran, however another gfortran which is not a directory can be found in /usr/local/bin

Typing:

which gfortran

Outputs:

/usr/local/bin/gfortran

And a long list search of this directory:

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

How can I fix this where everything seems to be correctly installed?

Any help would be greatly appreciated!

7
Do you have the xcode command line tools installed? Depending on the gfortran binary, those might be needed for stuff to work. You might also want to use e.g. the homebrew builds, those are kept up to date.janneb
@janneb I do have command line tools installed for xcode, and I tried the homebrew build on another apple setup and the same problem occurred but I can try it on this computerdatasplice

7 Answers

12
votes

On macOS Big Sur v11.1:

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

The fix is to add the stdlib to your $LIBRARY_PATH. For some reason or another it isn't in your standard $PATH anymore on 11.1.

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

(or add it to login file and restart terminal).

4
votes

I'll also chime in (19 Dec 2020) that I just updated from MacOS Mojave to Catalina and suddenly got this error.

It resolved itself with

brew reinstall gcc
brew reinstall gfortran
2
votes

Update: I tried what was suggested and installed the gfortran build from the gcc package using homebrew which gave me a newer version of gfortran and my problem was fixed!

1
votes

For those using 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"

I did ls -l /Library/Developer/CommandLineTools/SDKs/ and found that Xcode had installed one SDK for Catalina and one for Big Sur. I changed the soft link for MacOSX.sdk to point to the Catalina version.

0
votes

I had the same problem, but installing gfortran build from the gcc package using homebrew did not help. Instead, I installed the whole gcc using homebrew:

brew install gcc

and that solved the problem.

0
votes

I recently had this

ld: library not found for -lSystem

problem after upgrading Mac OS from v10 to v11 (Big Sur). I am using Xcode 12.3 and I used brew install gcc to install gfortran 10.2.0. I still saw the error after trying brew reinstall gcc. I was able to solve the problem using:

brew install gfortran

but I do not know why this works.

0
votes

I had this problem, and I'd tried lots of thing to solve the problem, but only using these "both" commands solved it:

brew reinstall gcc
brew reinstall gfortran