Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287884
  • 博文数量: 77
  • 博客积分: 1422
  • 博客等级: 上尉
  • 技术积分: 932
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-21 12:39
文章分类
文章存档

2011年(1)

2009年(3)

2008年(73)

我的朋友

分类:

2008-06-18 18:08:51

程序里使用了sqrt(),sin(),cos()函数,通常编译通不过
即使我们在源文件中已经
# include math.h  头文件,依然通不过

原因分析:应该用链接库来解决。

但是我们不知道库 的名字,这个时候怎么办呢?

解决办法
可以用下面的办法来解决
1.到标准库路径下面去找,看看有没有和函数相关的库
比如线程(thread)函数,我们用肉眼可以判断出应该和库文件(libpthread.a)有关.
标准库路径一般有如下3个
/lib   /usr/lib   /usr/local/lib

2.如果用肉眼无法观察出,就参照下面的方法
比如我要找sin这个函数所在的库.
用 nm -o /lib/*.so | grep sin > ./sin.txt 命令  (注意:-o  选项不能丢!)
查看./sin.txt 文件,
会找到这样的一行 libm-2.1.2.so:00009fa0 W sin
这样知道了sin 在 libm-2.1.2.so库里面,
gcc 的时候 -lm选项就可以了
(去掉libm-2.1.2.so前面的lib和后面的版本标志,就剩下m了所以是 -lm).
阅读(1465) | 评论(0) | 转发(0) |
0

上一篇:Linux date 用法

下一篇:net-snmp安装日志

给主人留下些什么吧!~~