zoukankan      html  css  js  c++  java
  • ldd

    ldd

    ldd(/usr/bin/ldd)本质是一个shell脚本,并不是一个二进制的可执行程序

    ldd可以列出一个程序运行所依赖的动态链接库(so文件)。

    由于制作二进制程序的过程中经常需要判断需要哪些共享库的支持,所以要使用ldd找出所需的依赖并添加至目标系统中,以确保程序可以在独立的目标系统内可靠的运行。

    eg.

    # ldd /usr/bin/ls
    
            linux-vdso.so.1 =>  (0x00007ffc62b26000)
    
            libachk.so => /lib64/libachk.so (0x00007f1159b5f000)
    
            libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f1159938000)
    
            libcap.so.2 => /lib64/libcap.so.2 (0x00007f1159733000)
    
            libacl.so.1 => /lib64/libacl.so.1 (0x00007f115952a000)
    
            libc.so.6 => /lib64/libc.so.6 (0x00007f1159159000)
    
            libdl.so.2 => /lib64/libdl.so.2 (0x00007f1158f55000)
    
            libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1158d39000)
    
            librt.so.1 => /lib64/librt.so.1 (0x00007f1158b31000)
    
            libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f11588cf000)
    
            /lib64/ld-linux-x86-64.so.2 (0x00007f1159f82000)
    
            libattr.so.1 => /lib64/libattr.so.1 (0x00007f11586ca000)

    "=>"左边的表示该程序需要连接的so 名称,右边表示由 Linux 的共享库系统找到的对应的共享库在文件系统中的具体位置。

    默认情况下,/etc/ld.so.conf 文件中包含有默认的共享库搜索路径。

    通常情况下,许多开放源代码的程序或函数库都会默认将自己安装到 /usr/local 目录下的相应位置(如:/usr/local/bin 或 /usr/local/lib),以便与系统自身的程序或函数库相区别。

    许多 Linux 系统的 /etc/ld.so.conf 文件中默认不包含 /usr/local/lib。因此往往会出现已经安装了共享库,但是却无法找到共享库的情况。

    具体解决办法如下:

    检查 /etc/ld.so.conf 文件,如果其中缺少 /usr/local/lib 目录,就添加进去;

    注意:修改了 /etc/ld.so.conf文件或者在系统中安装了新的函数库之后,需要运行一个命令:ldconfig,该命令用来刷新系统的共享库缓存,即 /etc/ld.so.cache 文件;

    为了减少共享库系统的库搜索时间,共享库系统维护了一个共享库 so 名称的缓存文件/etc/ld.so.cache。因此在安装新的共享库之后,一定要运行 ldconfig 刷新该缓存。

  • 相关阅读:
    java 集合排序
    java传值和传址
    Dom4j操作xml
    JAXP操作xml
    乐观锁和悲观锁【转】
    java IO【转】
    java 可变参数
    Eclipse调试Java的10个技巧【转】
    编译JDK源代码【转】
    Access restriction: The method typeNameToClass(String) from the type ObjectHandler is not accessible due to restriction on required library
  • 原文地址:https://www.cnblogs.com/tongyishu/p/12588724.html
Copyright © 2011-2022 走看看