静态-libgfortran在库构建中

时间:2013-07-28 17:11:06

标签: gcc linker fortran static-linking

我正在尝试构建一个只有libgfortran静态引用的库(最好也是libgcc)。

但是,如果我使用链接器标志

-static -lgfortran -static-libgfortran -static-libgcc
OS X上的

我得到

ld: library not found for -lcrt0.o
collect2: error: ld returned 1 exit status

如果我尝试使用

-shared -lgfortran -static-libgfortran

我得到了

Undefined symbols for architecture x86_64:
  "_quadmath_snprintf", referenced from:
      _write_float in libgfortran.a(write.o)
  "_strtoflt128", referenced from:
      __gfortrani_convert_real in libgfortran.a(read.o)
      __gfortrani_convert_infnan in libgfortran.a(read.o)

如果我使用-dynamiclib -lgfortran,一切编译都很好(但是有一个到libgfortran和libgcc的动态链接)。

OS X上似乎是gcc is not build statically

如何构建我的库,以便最终用户不需要安装gfortran或gcc?

我正在使用gcc的macports版本,但我准备使用gfortran / gcc的另一个经销商,如果它允许我这样做的话。

1 个答案:

答案 0 :(得分:8)

-dynamiclib -lgfortran -static-libgfortran \
  /opt/local/lib/gcc47/libquadmath.a -static-libgcc

似乎可以做到这一点!

奇怪的事情是弄清楚我需要添加libquadmath.a的完整路径,这对于gcc / gfortran来说就像是一个错误。