在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
添加到链接器行。