关于头文件的问题~~~~

C、C++和Java语言
回复
头像
见特但
帖子: 105
注册时间: 2009-10-11 14:43
送出感谢: 0
接收感谢: 0

关于头文件的问题~~~~

#1

帖子 见特但 » 2010-11-19 13:44

链接不过去,
/tmp/ccZQDD1r.o: In function `main':
ccx3.c:(.text+0x3c): undefined reference to `sqrt'
ccx3.c:(.text+0x75): undefined reference to `sqrt'
collect2: ld returned 1 exit status
这个是给出来的信息。
源文件里已经有#include"math.h"
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新
送出感谢: 0
接收感谢: 0

Re: 关于头文件的问题~~~~

#2

帖子 wzssyqa » 2010-11-19 16:34

为什么不是 <math.h> ?

gcc 需要加选项 -lm
头像
见特但
帖子: 105
注册时间: 2009-10-11 14:43
送出感谢: 0
接收感谢: 0

Re: 关于头文件的问题~~~~

#3

帖子 见特但 » 2010-11-20 19:53

wzssyqa 写了:为什么不是 <math.h> ?

gcc 需要加选项 -lm

管用,麻烦说说这个选项是什么意思阿?
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新
送出感谢: 0
接收感谢: 0

Re: 关于头文件的问题~~~~

#4

帖子 wzssyqa » 2010-11-21 5:51

链接数学库
头像
飞火流星
帖子: 990
注册时间: 2010-05-11 21:50
送出感谢: 1 次
接收感谢: 2 次

Re: 关于头文件的问题~~~~

#5

帖子 飞火流星 » 2010-11-24 1:29

我也是这个问题,会出现错误,但是

#include <stdio.h>
#include <math.h>
main()
{
int a;
scanf("%d",&a);
printf("%f",sqrt(a));
}
如果sqrt()里是a的话,就会报错,但是如果是数字的话,就一点问题都没有。这是为什么??




#include <stdio.h>
#include <math.h>
main()
{

printf("%f",sqrt(3));
}
问几个问题:
1.怎样查看编译器里已经链接的库函数?
2.如何在默认的库函数中一劳永逸添加其他库函数?我现在用的还是geany。。。
有事多折腾。。。没事瞎折腾。。。
本本
acer 4745g i5-430 4G ATI5650 1G 独显 500G硬盘
台台
赛扬coppermine 1.0GHz 160MB内存 集成显声卡 网卡一块。
archlinux+xfce无压力
头像
wzssyqa
帖子: 4010
注册时间: 2008-04-07 17:36
来自: 泰安人在阜新
送出感谢: 0
接收感谢: 0

Re: 关于头文件的问题~~~~

#6

帖子 wzssyqa » 2010-11-24 13:34

ls,sqrt接受double,不接受int。

一般IDE都能设置链接器选项
头像
飞火流星
帖子: 990
注册时间: 2010-05-11 21:50
送出感谢: 1 次
接收感谢: 2 次

Re: 关于头文件的问题~~~~

#7

帖子 飞火流星 » 2010-11-24 15:20

#include <stdio.h>
#include <math.h>
main()
{
double a;
scanf("%lf",&a);
printf("%lf",sqrt(a));
}

这样也不对啊,编译成功结束,但是生成的时候又会出现这样的消息

gcc -Wall -o "q" "q.c" (在目录 /home/dai 中)
q.c:4: warning: return type defaults to ‘int’
q.c: In function ‘main’:
q.c:8: warning: control reaches end of non-void function
/tmp/cckV4Dnm.o: In function `main':
q.c:(.text+0x36): undefined reference to `sqrt'
collect2: ld returned 1 exit status
编译失败。
有事多折腾。。。没事瞎折腾。。。
本本
acer 4745g i5-430 4G ATI5650 1G 独显 500G硬盘
台台
赛扬coppermine 1.0GHz 160MB内存 集成显声卡 网卡一块。
archlinux+xfce无压力
头像
飞火流星
帖子: 990
注册时间: 2010-05-11 21:50
送出感谢: 1 次
接收感谢: 2 次

Re: 关于头文件的问题~~~~

#8

帖子 飞火流星 » 2010-11-24 19:57

最后还是在生成选项里加上了-lm才行
有事多折腾。。。没事瞎折腾。。。
本本
acer 4745g i5-430 4G ATI5650 1G 独显 500G硬盘
台台
赛扬coppermine 1.0GHz 160MB内存 集成显声卡 网卡一块。
archlinux+xfce无压力
feirainy
帖子: 9
注册时间: 2009-07-03 18:52
送出感谢: 0
接收感谢: 0

Re: 关于头文件的问题~~~~

#9

帖子 feirainy » 2010-11-29 20:28

见特但 写了:
wzssyqa 写了:为什么不是 <math.h> ?

gcc 需要加选项 -lm

管用,麻烦说说这个选项是什么意思阿?
-lname 系统在存储标准库程序的目录(通常是/usr/lib)中搜索libname.a。因此数学库就是/usr/lib/libm.a
回复

回到 “C/C++/Java”