【问题标题】:Dumpbin.exe for Linux to view importsDumpbin.exe for Linux 查看导入
【发布时间】:2011-10-22 11:04:57
【问题描述】:

我不确定我的问题在 linux 上是否有意义。我正在寻找与 Visual Studio 工具包中的 dumpbin.exe 类似的东西。

基本上,我有一个现有项目,其中包含一堆库和一个可执行文件。我想弄清楚真正需要哪些库以及每个库中的哪些功能。

我只使用共享对象,因为这个项目针对的是 ARM 设备。

【问题讨论】:

    标签: linux shared-libraries import dumpbin


    【解决方案1】:

    也许你可以使用 ldd 和 nm。 ldd 会告诉你需要哪些共享对象(win 中的 dll)。 nm 会告诉转储符号。

    示例运行:

    $ ldd a
            linux-vdso.so.1 =>  (0x00007fffd1dff000)
            libc.so.6 => /lib/libc.so.6 (0x00007fcbc97d9000)
            /lib64/ld-linux-x86-64.so.2 (0x00007fcbc9b21000)
    $ nm a
    0000000000600e40 d _DYNAMIC
    0000000000600fe8 d _GLOBAL_OFFSET_TABLE_
    00000000004005b8 R _IO_stdin_used
                     w _Jv_RegisterClasses
    0000000000601020 A __bss_start
    0000000000601008 D __data_start
    0000000000601010 D __dso_handle
                     w __gmon_start__
    0000000000600e14 d __init_array_end
    0000000000600e14 d __init_array_start
    00000000004004d0 T __libc_csu_fini
    00000000004004e0 T __libc_csu_init
                     U __libc_start_main@@GLIBC_2.2.5
    0000000000601020 A _edata
    0000000000601028 A _end
    00000000004005a8 T _fini
    00000000004003c0 T _init
    0000000000400400 T _start
    0000000000601008 W data_start
    00000000004004b8 T main
    

    编辑:忘记了 objdump。即:

    $ objdump -f a
    
    a:     file format elf64-x86-64
    architecture: i386:x86-64, flags 0x00000112:
    EXEC_P, HAS_SYMS, D_PAGED
    start address 0x0000000000400400
    

    使用 -x 将为您提供所有标题(发布时非常冗长,但请尝试一下 :))

    【讨论】:

    • 使用 ldd 我得到“不是动态可执行文件”。
    • 如果您收到该消息,则相关文件不是动态链接而是静态编译的(所有符号都在文件本身中编译,并且在运行时不使用任何共享对象)
    猜你喜欢
    • 2016-12-28
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多