在FreeBSD上10.1使用Clang版本3.4.1
现在我已经看到其他线程询问如何使用pow()进行编译,但我还没有看到有这个问题的线程.举个例子:
#include <math.h>
#include <stdio.h>
int main()
{
float result;
result = pow(2,3);
printf("%d", result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在使用pow(),我需要发出clang参数-lm.
cc -lm -o name name.c
但是,更换pow(2,3)用sqrt(5);,我可以编译cc -o name name.c.如果它们都使用math.h,那么为什么pow()需要链接到库?方面没有:安装gcc进行测试,我根本不需要使用-lm.
您的目标是浮点硬件sqrt直接实现的处理器,与所有符合IEEE-754标准的设备一样.因此,编译器可以sqrt直接生成代码,而不需要链接到库函数.
另一方面,浮点硬件通常不提供实现,pow因此它确实需要在库中实现.