在Win 7和Quad精度库下使用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,但这没有帮助。

这里有一个相关的问题,但没有任何帮助我,并且它不是完全相同的错误:Quadruple Precision in C++ (GCC)

最佳答案

当您需要的是链接器解决方案时,您正在寻找编译器解决方案:
您的代码正在按应有的方式进行编译,因此无需更改代码即可解决您的问题:


  /tmp/ccLM2lOn.o:lquad.c:(.text+0xdb3):未定义对“ sqrtq”的引用
  
  collect2:错误:ld返回1退出状态


undefined reference to错误表明您的对象所需的功能在另一个库中。
按照@Marc Glisse的建议,尝试将-lquadmath添加到链接器行。

09-06 09:56