程序里使用了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).
阅读(1501) | 评论(0) | 转发(0) |