【问题标题】:Static -libgfortran in library build库构建中的静态 -libgfortran
【发布时间】:2013-07-28 10:54:56
【问题描述】:

我正在尝试构建一个仅包含对 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 的另一个分发器。

【问题讨论】:

    标签: gcc linker fortran static-linking


    【解决方案1】:
    -dynamiclib -lgfortran -static-libgfortran \
      /opt/local/lib/gcc47/libquadmath.a -static-libgcc
    

    似乎可以解决问题!

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

    【讨论】:

    • 根据您的解决方案,我最终得到了这个:-l:libgfortran.a -l:libquadmath.a。我不需要静态 libgcc,所以没有尝试那部分。
    猜你喜欢
    • 2011-08-09
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多