在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,但这没有帮助。
答案 0 :(得分:1)
当您需要的是链接器解决方案时,您正在寻找编译器解决方案: 您的代码正在编译,因此代码中没有任何更改可以解决您的问题:
/tmp/ccLM2lOn.o:lquad.c :(。text + 0xdb3):对'sqrtq'的未定义引用
collect2:错误:ld返回1退出状态
undefined reference to
错误表示您的对象所需的函数位于另一个库中。
正如@Marc Glisse所建议的那样,尝试将-lquadmath
添加到链接器行。