如果我包含<stdlib.h>或<stdio.h>在C程序中,我不必在编译时链接这些,但我必须链接到<math.h>,使用-lmgcc,例如:
gcc test.c -o test -lm
Run Code Online (Sandbox Code Playgroud)
这是什么原因?为什么我必须显式链接数学库而不是其他库?
我正在使用math.h和-lm编译的选项.我尝试了所有:
gcc -o ssf ssf_tb.c ssf.c -lm
gcc -o ssf ssf_tb.c -lm ssf.c
gcc -o -lm ssf -lm ssf_tb.c ssf.c
Run Code Online (Sandbox Code Playgroud)
但错误:
undefined reference to 'pow'
Run Code Online (Sandbox Code Playgroud)
在所有情况下都会发生
I am trying to run the following test program on my Solaris 10 sparc machine using gcc 5.5.0
#include <iostream>
#include <cmath>
int main()
{
std::cout << "exp2(4) = " << std::exp2(4) << '\n'
<< "exp2(0.5) = " << std::exp2(0.5) << '\n'
<< "exp2(-4) = " << std::exp2(-4) << '\n';
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Here are the OS details,
~$ uname -a
SunOS sovms577 5.10 Generic_147147-26 sun4v sparc SUNW,SPARC-Enterprise-T5220
~$ cat /etc/release
Oracle Solaris 10 1/13 s10s_u11wos_24a SPARC
Copyright (c) 1983, …Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
#include <math.h>
void main()
{
int i, diff, sum = 0, num1 = 6, num2 = 2;
for(i = 0; i <= 4; i++)
{
diff = num1 - num2;
sum += pow(diff, i);
}
printf("%d", sum);
}
Run Code Online (Sandbox Code Playgroud)
每当我尝试执行此程序时,会弹出一条错误消息:
在函数中
main:
未定义引用pow.
我在这里错过了什么?