zoukankan      html  css  js  c++  java
  • 使用gcc的-l参数的时候,怎么查找函数所在库的位置

    键盘输入一个整数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是前者的链接文件(即快捷方式):

     

  • 相关阅读:
    水晶报表显示到aspx页面中
    Python 2.7获取网站源代码的几种方式_20160924
    Seal Report_20160923
    MySQL交叉表处理_20160923
    MySQL日期处理函数_20160922
    MySQL文本处理函数2_20160921
    kettle及数据库导数_20160920
    MySQL常用的数据类型及函数_20160920
    MySQL记录_20160919
    [vuex]
  • 原文地址:https://www.cnblogs.com/FengZeng666/p/12432491.html
Copyright © 2011-2022 走看看