码迷,mamicode.com
首页 > 其他好文 > 详细

使用gcc的-l参数的时候,怎么查找函数所在库的位置

时间:2020-03-07 10:10:31      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:gcc   使用   编译   usr   命令   报错   键盘   centos   ubuntu   

键盘输入一个整数n,接着输入n个实型数,分别求取这n个实型数的平方根。代码如下:

技术图片

 

使用gcc编译,报错如下: 

技术图片

 

原因是没有链接数学库,加上-lm即可,-l是链接,m是数学库(math.h)

 技术图片

 

那我们怎么知道sqrt在哪个库呢?

centos7下使用:

nm -Do /lib64/*.so|grep sqrt

结果为:

技术图片

 

 /lib64/libm-2.17.so就是sqrt的动态链接库的位置,

技术图片

 找到后,只要gcc的-l参数后面加上上图中lib后面的那个字母即可,libm-2.17.so中m表示库名,2.17是版本。所以gcc上加-lm进行链接

 Ubuntu64位使用:

nm -Do /lib/x86_64-linux-gnu/*.so|grep sqrt

因为Ubuntu的动态库是在 /lib/x86_64-linux-gnu 下,而centos是在 /lib64/下。

那一个陌生的linux怎么知道动态库在哪呢,数学库肯定叫libm,这时可以使用find命令对libm进行查找,这样就可以找到动态库的目录。

find / -name *libm*

技术图片

 

技术图片

 

说明当前系统的动态库.so在/usr/lib64/目录下,所以接下来要找函数在哪个库,只需要使用

 nm /lib64/*.so|grep 函数名 

即可。

/usr/lib64就是/lib64,因为/lib64是前者的链接文件(即快捷方式):

 技术图片

 

使用gcc的-l参数的时候,怎么查找函数所在库的位置

标签:gcc   使用   编译   usr   命令   报错   键盘   centos   ubuntu   

原文地址:https://www.cnblogs.com/FengZeng666/p/12432491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!