c - 使用 GNU/GCC 四精度库出错

标签 c gcc cygwin double precision

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

gcc -c lquad.c

...运行正常,但是

gcc lquad.o

...产生以下错误:

/tmp/ccLM2lOn.o:lquad.c:(.text+0xdb3): undefined reference to `sqrtq'

collect2: error: ld returned 1 exit status

我在 C 源代码中有 #includequadmath.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): undefined reference to `sqrtq'

collect2: error: ld returned 1 exit status

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

关于c - 使用 GNU/GCC 四精度库出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058685/

相关文章:

c - 以 64 位值作为键的哈希表

linux - ssh x 转发并关闭终端

c - 将数据从 C 管道传输到 Gnuplot

GCC:为 ARM 构建交叉编译器 - 未找到 pthread.h

为双向链表创建标题

c++ - 将 AVX 与 GCC : __builtin_ia32_addpd256 not declared 一起使用

java - SWIG CYGWIN DLL 链接

bash - 来自 bash 的 cygwin clearscreen

c - 在 C 中使用 open() 函数创建的文件的默认访问模式是什么?

c - C中不同变量的状态机