• 经常需要查看一个可执行文件或者库依赖那些库文件。 通常情况下这很好办,使用ldd命令就可以了,比如: 1 2 3 4 5 6 $ ldd /bin/bash  linux-vdso.so.1 => (0x00007ffd8ffef000)  ...

    经常需要查看一个可执行文件或者库依赖那些库文件。

    通常情况下这很好办,使用ldd命令就可以了,比如:

    1
    2
    3
    4
    5
    6
    $ ldd /bin/bash
            linux-vdso.so.1 =>  (0x00007ffd8ffef000)
            libtinfo.so.5 => /lib/x86_64-linux-gnu/libtinfo.so.5 (0x00007f1f16e54000)
            libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1f16c50000)
            libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1f1688a000)
            /lib64/ld-linux-x86-64.so.2 (0x00007f1f17096000)

    但是更多的情况是在交叉编译环境中,如果我们需要查看一个交叉编译出来的可执行文件依赖库,怎么办?
    对,需要用到目标环境的ldd

    1
    2
    3
    4
    $ toolchain-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ldd mosquitto_sub
            libmosquitto.so.1 not found
            libc.so.6 => /lib/libc.so.6 (0x8badf00d)
            ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0x8badf00d)

    偶尔情况,可能会出现这个错误:

    1
    2
    3
    $ toolchain-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ldd mosquitto_sub
    arm-linux-gnueabihf-ldd: no root given
    Try `arm-linux-gnueabihf-ldd --help' for more information

    这时候你需要使用–root选项(引入交叉工具链目录下的lib):

    1
    2
    3
    4
    $ toolchain-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ldd --root toolchain-arm-linux-gnueabihf mosquitto_sub
            libmosquitto.so.1 not found
            libc.so.6 => /lib/libc.so.6 (0x8badf00d)
            ld-linux-armhf.so.3 => /lib/ld-linux-armhf.so.3 (0x8badf00d)

    其实上面说的都不是重点,重点在这里:你可以使用readelf命令就可以看出一个文件的依赖库,而且不用目标板的readelf,cool吧:

    1
    2
    3
    4
    5
    6
    7
    $ readelf -d mosquitto_sub                                                   
     
    Dynamic section at offset 0x35fc contains 25 entries:
      Tag        Type                         Name/Value
     0x00000001 (NEEDED)                     Shared library: [libmosquitto.so.1]
     0x00000001 (NEEDED)                     Shared library: [libc.so.6]
    展开全文
  • Linux下可执行程序包括可执行程序exe和so, 两者文件都是ELF打头的。 objdump -x libxxxxx.so | grep NEEDED objdump -x 可执行程序名 | grep NEEDED 或 arm-hisiv300-linux-objdump -x 可执行程序 | grep NEEDED...
  • 1. 利用ldd查看可执行程序依赖库 [root@~]# ldd /usr/local/php/bin/php linux-vdso.so.1 => (0x00007fff753f5000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00000031f4600000) librt.so.1 => /lib64/librt....
  • linux 查看程序依赖 2015-05-13 15:26:38
    readelf -d [f2@f2 bin]$ readelf -d server Dynamic section at offset 0x10e9f8 contains 32 entries: Tag Type Name/Value 0x00000001 (NEEDED) S
  • linux查看程序依赖的库 2013-01-06 21:42:24
    查看arm程序依赖库 # arm-linux-readelf hello -d Dynamic section at offset 0xf10 contains 25 entries:  Tag Type Name/Value  0x00000001 (NEEDED) Shared l
  • 我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的。 windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行。 但是linux下,不同版本内核的linux下编译的c程序,在其他...
  • 使用ldd 可以查询一个执行程序依赖的所有so库 比如ls 命令: # cd /bin/ # ldd ls 2. 根据ldd 查询的到的结果然后拷贝到指定目录 ldd face_server | awk '{print $3}' | xargs -i cp -L {} /home/zhou/tmp/...
  • linux 查看依赖关系 2015-02-11 15:11:43
    直接使用ldd 命令即可,可以查看可执行程序,比如: root@forlinx:~# ldd /bin/mv linux-gate.so.1 => (0x00c7b000) libselinux.so.1 => /lib/i386-linux-gnu/libselinux.so.1 (0x00136000) librt.so.1 => /...
  • Linux查看依赖方法 2018-04-27 11:54:44
    1.查看依赖的库:objdump -x xxx.so | grep NEEDED2...查看可执行程序依赖的库:objdump -x 可执行程序名 | grep NEEDED3.查看缺少的库:ldd xxx.so如果某个依赖的库不存在,会打印类似“xxx.so not found”的提示。...
  • 方法一: yubo@autoio:~$ ldd AppName 方法二: yubo@autoio:~$ objdump -x AppName | grep NEED 方法三: yubo@autoio:~$ readelf -a AppName | grep "Shared library
  • llinux下: ldd:可以查看程序依赖的共享库 nm:可以查看程序的符号表
  • 文章目录Linux 环境下 Qt 可执行程序依赖库打包脚本一、利用 ldd 命令查看程序需要的依赖库二、编写依赖库打包脚本三、总结 Linux 环境下 Qt 可执行程序依赖库打包脚本 使用 Qt Creator 完成程序编码之后,虽然会在...
  • Linux 查看动态库依赖 2019-06-29 14:21:02
    查看动态库依赖3种方法 (1) $ ldd /bin/grep linux-gate.so.1 => (0xffffe000) libc.so.6 => /lib/libc.so.6 (0xb7eca000) /lib/ld-linux.so.2 (0xb801e000) (2) $ LD_TRACE_LOADED_OBJECTS=...
  • linux查看动态链接库so文件的依赖的相关组件  我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的。  windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行。  ...
  • 如何查看Linux程序或进程用到的库(共享库依赖关系)? 查看可执行程序的共享库依赖关系  要找出某个特定可执行依赖的库,可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。  $ ldd /path...
  • ldd "程序名" | awk '{print $3' | xargs -i cp -L {} "要拷贝到的目录" eg: ldd iprobe | awk '{sprint $3}' | xargs -i cp -L {} /home/iprobe_lib/  
  • linux查看程序依赖的库 2013-07-03 23:38:18
    在x86下,为了查看程序依赖的库,可以使用ldd命令 但如果是使用arm-linux-gcc 等交叉编译环境编译出来的程序,则要使用readelf命令来查看了 库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员...
  • 创建静态库: ar -rcs test.a *.o ...查看程序依赖的动态库: readelf -a xxx|grep library 如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库。 rebi@ubuntu:~/test$ arm-none-linux-gnueabi-reade
1 2 3 4 5 ... 20
收藏数 60,237
精华内容 24,094