为什么我会收到链接错误当MATH.H调用功能?(Why Am I Getting Link Erro

2019-06-24 00:31发布

当试图调用函数在math.h ,我得到链接错误,如以下

undefined reference to sqrt

但是我做了#include <math.h>
我用gcc和编译如下:

gcc -Wall -D_GNU_SOURCE blah.c -o blah

为什么不能链接找到的定义sqrt

Answer 1:

-lm添加到命令,当你调用gcc的:
GCC -Wall -D_GNU_SOURCE blah.c -o等等-lm

这会告诉链接与数学库链接。 包括math.h中会告诉大家,像开方运算功能()存在的编译器,但他们是在一个单独的库,该连接器需要与你的可执行文件包中定义的。

作为FreeMemory指出库称为libm.a。 在类Unix系统,命名程序库的规则是LIB [胡说] .A。 然后,如果你想将它们链接到您的可执行文件使用-l [等等。



Answer 2:

你需要的数学函数库显式链接。 加入-lm给你传递给GCC,这样的链接器知道链接的标志libm.a



Answer 3:

追加-lm海湾合作委员会命令将数学库链接的结尾:

gcc -Wall -D_GNU_SOURCE blah.c -o blah -lm

对于要链接正确的事情,编译器标志事项的顺序! 具体而言, -lm应放置在该行的末尾 。

如果你想知道为什么math.h库需要用C编译时要不惜一切包括在内,看看这个解释在这里 。



文章来源: Why Am I Getting Link Errors When Calling Function in Math.h?
标签: math gcc linker