7

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

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

-static -lgfortran -static-libgfortran -static-libgcc

在 OS XI 上

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.

看起来gcc 不是在 OS X 上静态构建的。

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

我正在使用 gcc 的 macports 版本,但如果允许我这样做,我准备使用 gfortran/gcc 的另一个分发器。

4

1 回答 1

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

似乎可以解决问题!

奇怪的是,我发现我需要为 . 添加完整路径,老实说libquadmath.a,这感觉就像是gcc/的错误。gfortran

于 2013-07-28T18:50:46.390 回答