当前位置: 技术问答>linux和unix
关于stdio.h的函数
来源: 互联网 发布时间:2015-02-12
本文导语: #include #include int main(void) { double pi = M_PI; double Sqrt_Result; Sqrt_Result = sqrt(pi); return 0; } 这是一段很简单的求pi的开方的程序,但在GCC下编译时总不能通过,情况如下: [user@server1 c]$...
#include
#include
int main(void)
{
double pi = M_PI;
double Sqrt_Result;
Sqrt_Result = sqrt(pi);
return 0;
}
这是一段很简单的求pi的开方的程序,但在GCC下编译时总不能通过,情况如下:
[user@server1 c]$ gcc pisqrt.c
/tmp/ccegunQd.o: In function `main':
/tmp/ccegunQd.o(.text+0x41): undefined reference to `sqrt'
collect2: ld returned 1 exit status
这里有两个疑问:
(我在Redhat8.0的默认环境下进行编译!)
1:sqrt()为什么出错(换成stdio.h中的其他程序也一样),但stdio.h中定义的常量M_PI确可以成功使用?
2:出错信息中的“/tmp/ccegunQd.o”提示是指什么?(源文件放在目录c下,编译也在c下进行)
#include
int main(void)
{
double pi = M_PI;
double Sqrt_Result;
Sqrt_Result = sqrt(pi);
return 0;
}
这是一段很简单的求pi的开方的程序,但在GCC下编译时总不能通过,情况如下:
[user@server1 c]$ gcc pisqrt.c
/tmp/ccegunQd.o: In function `main':
/tmp/ccegunQd.o(.text+0x41): undefined reference to `sqrt'
collect2: ld returned 1 exit status
这里有两个疑问:
(我在Redhat8.0的默认环境下进行编译!)
1:sqrt()为什么出错(换成stdio.h中的其他程序也一样),但stdio.h中定义的常量M_PI确可以成功使用?
2:出错信息中的“/tmp/ccegunQd.o”提示是指什么?(源文件放在目录c下,编译也在c下进行)
|
1. 在连接时找不到sqrt函数,因为你没指定库文件
使用gcc -lm pisqrt.c
2. /tmp/ccegunQd.o是中间的临时文件。
gcc需要先把.c编译成.o,然后在连接成a.out,
你没有指定.o存放的位置和名称
gcc就临时存在/tmp下,并随便给起个唯一的名字。
gcc执行完后它会删掉/tmp/ccegunQd.o
使用gcc -lm pisqrt.c
2. /tmp/ccegunQd.o是中间的临时文件。
gcc需要先把.c编译成.o,然后在连接成a.out,
你没有指定.o存放的位置和名称
gcc就临时存在/tmp下,并随便给起个唯一的名字。
gcc执行完后它会删掉/tmp/ccegunQd.o
|
最好用下面的格式编译
gcc -o pisqrt pisqrt.c -lm
gcc -o pisqrt pisqrt.c -lm