在Linux操作系统下,gcc编译的怪问题,pow(2.0,3.0)=?

lyllxfly 2009-11-17 10:27:15
在Linux操作系统下,gcc编译的怪问题,pow(2.0,3.0)=?

在程序中,

int main(void){
double x,y,z;

x=2.0;
y=3.0;
z=pow(x,y);//////但z=pow(2.0,3.0)正确地得出8.000000

竟编译通不过,出现错误:
undefined reference to 'pow'

...全文
237 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yy2004005 2009-11-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caballeroo 的回复:]
#include <math.h>只是包含了要使用的数学函数库的头文件,其中仅仅包含了相关数学函数的声明,其真正的函数体以库的形式封装起来了,所以在链接的时候需要将该库链接进来,即-lm就可以了!
[/Quote]
正解,看来不仅仅涉及编译的问题,对原理也要有所了解
Caballeroo 2009-11-18
  • 打赏
  • 举报
回复
#include<math.h>只是包含了要使用的数学函数库的头文件,其中仅仅包含了相关数学函数的声明,其真正的函数体以库的形式封装起来了,所以在链接的时候需要将该库链接进来,即-lm就可以了!
Caballeroo 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lyllxfly 的回复:]
楼上,你是怎么知道  gcc  -lm  *.c
???
[/Quote]

你用了pow()的数学函数库,当然要用 -lm 链接该库了。
lyllxfly 2009-11-18
  • 打赏
  • 举报
回复
楼上,你好!
我已用了#include<math.h>,难道还有扩展库吗?请问其中有哪那常用函数?
lyllxfly 2009-11-17
  • 打赏
  • 举报
回复
楼上,你是怎么知道 gcc -lm *.c
???
ShowMan 2009-11-17
  • 打赏
  • 举报
回复
gcc -lm *.c

4,437

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧