ubuntu14.04的sin函数在哪里

sh/bash/dash/ksh/zsh等Shell脚本
回复
Travelinglight
帖子: 7
注册时间: 2014-07-08 21:13
系统: ubuntu 14.04

ubuntu14.04的sin函数在哪里

#1

帖子 Travelinglight » 2014-07-08 21:23

编译一段带sin函数的c程序,虽然已经include了math库,但是gcc的时候说sin函数undeclared
于是我写了nm -o /lib/*.so|grep sin来查找sin函数的库文件,但是输出结果是:
nm: /lib/klibc-P2s_k-gf23VtrGgO2_4pGkQgwMY.so: no symbols
度娘了好久都没见到合理的解释,请问ubuntu的math库去哪了
PS:ubuntu14.04是有math库的,因为gcc -o sin sin.c -lm语句可以编译该c文件,说明可以调用math库
头像
YeLee
论坛版主
帖子: 26406
注册时间: 2008-08-13 8:48
系统: Fundu i64
来自: 东海硇州,一双管钥。
联系:

Re: ubuntu14.04的sin函数在哪里

#2

帖子 YeLee » 2014-07-09 10:06

[c]
/* sin example */
#include <stdio.h> /* printf */
#include <math.h> /* sin */

#define PI 3.14159265

int main()
{
double param, result;
param = 30.0;
result = sin(param*PI/180);
printf("The sine of %f degrees is %f.\n", param, result);
return 0;
}
[/c]
gcc -Wall test.c -lm可以编译通过。 :em01
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: ubuntu14.04的sin函数在哪里

#3

帖子 astolia » 2014-07-09 10:45

debian系的发行版现在都用multiarch方式处理不同架构下的库文件共存问题。
所以一般都不直接放在/lib下,而是/lib下相应架构的子目录中,比如/lib/x86_64-linux-gnu/、/lib/i386-linux-gnu/之类,你要找的libm就在那里面。

另外,.so是动态链接库,里面的符号属于动态符号,该用nm的-D参数来看
nm -o -D /lib/*/libm*.so | grep sin
Travelinglight
帖子: 7
注册时间: 2014-07-08 21:13
系统: ubuntu 14.04

Re: ubuntu14.04的sin函数在哪里

#4

帖子 Travelinglight » 2014-07-09 18:45

谢谢,我已经找到方法了,有两种:
1)用man sin来看
2)用nm命令来看,但是这个命令不能递归进入文件夹搜索,所以需要/*/*.so*,/*/*/*.so*,/*/*/*/*.so*一次次搜,直到找到为止。
例如nm -o -D /*/*/*.so* | grep -w sin
-w的作用是只匹配单词,而不是字符串的一部分
沙发说的是直接用-lm,这个是暂时解决问题的方法,下次遇到例如crypt之类的函数就又得上网搜索了
板凳说的也包含了lm,其实我就是想知道在不知道libm的情况下如何找到libm。
thank you all the same
回复