使用GNU / GCC四精度库制作错误

时间:2015-12-03 05:42:32

标签: c gcc cygwin double precision

在Win 7和四精度库下使用Cygwin和GCC时:

gcc -c lquad.c

...这运行正常,但

gcc lquad.o

...产生以下错误:

  

/tmp/ccLM2lOn.o:lquad.c :(。text + 0xdb3):未定义对`sqrtq'

的引用      

collect2:错误:ld返回1退出状态

我在C源中有#include quadmath.h__float128类型有效,但不是函数(例如上面的sqrtq)。该头文件具有所有相关的外部,例如:

extern __float128 sqrtq (__float128) __quadmath_throw;

我发现了一个绝对具有这些功能的dll cygquadmath-0.dll。它位于Cygwin安装的3个位置。此外,我将其复制到Windows \ System,但这没有帮助。

这里有一个相关的问题,但在那里没有任何帮助,这不是完全相同的错误:Visual Studio 2015 snapshot

1 个答案:

答案 0 :(得分:1)

当您需要的是链接器解决方案时,您正在寻找编译器解决方案: 您的代码正在编译,因此代码中没有任何更改可以解决您的问题:

  

/tmp/ccLM2lOn.o:lquad.c :(。text + 0xdb3):对'sqrtq'的未定义引用

     

collect2:错误:ld返回1退出状态

undefined reference to错误表示您的对象所需的函数位于另一个库中。 正如@Marc Glisse所建议的那样,尝试将-lquadmath添加到链接器行。