Re: gfortran static linking under OS X (was: Re: )

2021-03-19 Thread Daniel Feenberg




On Fri, 19 Mar 2021, Tobias Burnus wrote:


Hi,

I am not sure whether it helps, but I want to point out that libm is the math 
library which is on Linux usually GLIBC and I assume on OS X it is provided 
by the OS vendor.


Additionally, that libm is linked dynamically.

This seems to be a OS X issue ? and I have no idea about OS X, but I found 
the following:


https://github.com/fxcoudert/gfortran-for-macOS/issues/12



It is certainly an OS X issue. There is no problem in Linux, FreeBSD or 
Windows with the same compiler. As I understand it, OS X doesn't allow 
true dynamic linking, but it does allow a compiler/linker to produce an 
executable binary which only requires OS supplied libraries at execution 
time, and which includes all the compiler specific libraries. So I 
wouldn't actually expect libm to be statically linked.


Apparently the problem arises because the authors of libquadm don't want 
users to use it in statically linked binaries, and did something to 
prevent that from happening. Unfortunately, it means that specialized 
knowledge is required to statically link gfortran programs, even if they 
don't use quad precision math.


Daniel Feenberg


which suggests that there is a mismatch of the XCode / MacOS X SDK version.

As work around, it seems to work to set MACOSX_DEPLOYMENT_TARGET and/or to 
ensure that you have the same xcode version as the one used by gfortran, e.g. 
by "xcode-select --install".


In some other thread, the suggestion was to use -L/usr/lib but I assume that 
won't help. Looking at https://github.com/xianyi/OpenBLAS/issues/3032 ? it 
seems as if you can use 'gfortran -v taxsim.for' to see the SDK version used 
when building GCC.


At least that example had some |string like:
||-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk/|

|If you had installed 11.0 instead, ||MACOSX_DEPLOYMENT_TARGET=11.0 would 
work.|


|I hope it helps. If not, you need to find someone else as I have no idea 
about OS X.|


|Good luck!|

|Tobias
|

On 19.03.21 21:22, Daniel Feenberg via Fortran wrote:


Is there a way to make a statically linked binary with fortran in OS
X? For much of the past year I have been using:

  gfortran taxsim.for -static-libgfortran -static-libgcc

but since January I only get the error message;

  ld: library not found for -lm.
  collect2: error: ld returned 1 exit status?

This is OS X 11,2,3 Big Sur and fortran version 6.3.0. I need static
linking because my users are not developers and do not have Xcode or
gcc installed. This is free software.  I have seen postings from 2015
suggesting that I rename libquadmath.0.dylib, which I did try but
which did not help.

Of course I have no need for lquad precision variables, which I
understand is the source of the problem.

Daniel Feenberg
NBER




Re: gfortran static linking under OS X (was: Re: )

2021-03-22 Thread Daniel Feenberg




On Sat, 20 Mar 2021, Iain Sandoe wrote:


Daniel Feenberg  wrote:


On 3/19/21, Iain Sandoe  wrote:


On Fri, 19 Mar 2021, Tobias Burnus wrote:



you should be able to work around this without changing the compiler or
rebuilding it,



%rename lib liborig
*lib:  -lquadmath -lm %(libgcc) %(liborig)


...




I managed to install 10.2 and found that the error message goes away. No 
need to mess with the .spec file.A "static" binary can be produced with:


   gfortran taxsim.for -static-libgfortran -static-libgcc

in version 10.2. however, I have only one Mac, so I can't be 100% sure the 
binary will port to another machine, but I am hopeful.


Thank you all for your attention..

Daniel Feenberg
NBER


[no subject]

2021-03-19 Thread Daniel Feenberg via Fortran
Is there a way to make a statically linked binary with fortran in OS
X? For much of the past year I have been using:

 gfortran taxsim.for -static-libgfortran -static-libgcc

but since January I only get the error message;

 ld: library not found for -lm.
 collect2: error: ld returned 1 exit status?

This is OS X 11,2,3 Big Sur and fortran version 6.3.0. I need static
linking because my users are not developers and do not have Xcode or
gcc installed. This is free software.  I have seen postings from 2015
suggesting that I rename libquadmath.0.dylib, which I did try but
which did not help.

Of course I have no need for lquad precision variables, which I
understand is the source of the problem.

Daniel Feenberg
NBER


Re: gfortran static linking under OS X (was: Re: )

2021-03-20 Thread Daniel Feenberg via Fortran
On 3/19/21, Iain Sandoe  wrote:

>> On Fri, 19 Mar 2021, Tobias Burnus wrote:

>
> you should be able to work around this without changing the compiler or
> rebuilding it,
>
> find
>
> /path/to/compiler/install/lib/libgfortran.spec
>
> make a copy of that (for backup only)
>
> the file contains something like:
>
> #
> # This spec file is read by gfortran when linking.
> # It is used to specify the libraries we need to link in, in the right
> # order.
> #
>
> %rename lib liborig
> *lib:  -lquadmath -lm %(libgcc) %(liborig)
>
> change the last line line to :
>
> *lib: %{!static-libgfortran: -lquadmath } %{static-libgfortran:
> libquadmath.a%s} %(libgcc) %(liborig)
>
> ===
>
> and try your link again
>

Tried that, the error message is:

   ld: library not found for -lSystem

Indeed there is no libsystem.a anywhere on the computer. Any ideas?

Daniel Feenberg