semi-newbie | static compilation/linking gfortran
Manuel López-Ibáñez
lopezibanez@gmail.com
Wed Jan 20 17:14:00 GMT 2016
On 20/01/16 14:26, Evan Cooch wrote:
> However, my initial attempts haven't met with much success -- I suspect I'm
> missing something obvious, so I'm hoping someone can point out my obvious
> mistakes.
It is difficult to tell without a small self-contained testcase but...
> Now,to compile a statically linked version, my attempts (so far) have basically
> involved tweaking the makefile, adding -static as compiler option, and changing
> all the references to *.o in the makefile to *.a. My attempt is copied@the
> bottom of this note.
This should not be necessary (and I'm surprised gcc doesn't complain).
> gfortran -fopenmp *.a Linpack.a -static-libgfortran -o solver.64.static
> /usr/lib/../lib64/crt1.o: In function `_start':
> (.text+0x20): undefined reference to `main'
> collect2: error: ld returned 1 exit status
which file contains the main program? is there an .o file for it? does it
appear in the command-line if you compile manually?
> COPTIONS = -static -c -fimplicit-none -fbounds-check -m64 -funroll-loops
> -ftree-vectorize -O2
> $(LINKER) -fopenmp *.a Linpack.a -static-libgfortran -o solver.64.static
-static is a linker option not a compile option. It should appear in the linker
command-line.
Why not try first with? This compiles and links in one step.
gfortran -fimplicit-none -fbounds-check -m64 -funroll-loops -ftree-vectorize
-O2 -fopenmp -static -static-libgfortran -o solver.64.static *.f90 *.mod
Linpack.a
If you use other libraries, you need to have their .a files and gfortran needs
to be able to find them.
Good luck!
Manuel.
More information about the Gcc-help
mailing list