Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac OS X的readelf类工具?_C_Macos_Function_Symbols - Fatal编程技术网

Mac OS X的readelf类工具?

Mac OS X的readelf类工具?,c,macos,function,symbols,C,Macos,Function,Symbols,是否有一个读取Mac OS X二进制文件的工具,可以打印与此readelf输出类似的重定位表和符号偏移的信息 readelf -r app Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries: Offset Info Type Sym.Value Sym. Name 08049d58 00001706 R_386_GLOB_DAT 00000000 __gmon_s

是否有一个读取Mac OS X二进制文件的工具,可以打印与此
readelf
输出类似的重定位表和符号偏移的信息

readelf -r app

Relocation section '.rel.dyn' at offset 0x5ec contains 2 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
08049d58  00001706 R_386_GLOB_DAT    00000000   __gmon_start__
08049d60  00000305 R_386_COPY        08049d60   _ZSt4cout

Relocation section '.rel.plt' at offset 0x5fc contains 13 entries:
 Offset     Info    Type            Sym.Value  Sym. Name
08049d24  00000107 R_386_JUMP_SLOT   0804868c   print
08049d28  00000207 R_386_JUMP_SLOT   0804869c   _ZNSt8ios_base4InitC1E
08049d2c  00000507 R_386_JUMP_SLOT   080486ac   _ZStlsISt11char_traits
08049d30  00000607 R_386_JUMP_SLOT   080486bc   _ZNSolsEPFRSoS_E
08049d34  00000707 R_386_JUMP_SLOT   08048664   _init
08049d38  00000807 R_386_JUMP_SLOT   080486dc   sleep
08049d3c  00000907 R_386_JUMP_SLOT   080486ec   _ZNKSsixEj
08049d40  00000b07 R_386_JUMP_SLOT   080486fc   _ZNKSs4sizeEv
08049d44  00000c07 R_386_JUMP_SLOT   0804870c   __libc_start_main
08049d48  00000d07 R_386_JUMP_SLOT   08048ae4   _fini
08049d4c  00001307 R_386_JUMP_SLOT   0804872c   _ZSt4endlIcSt11char_tr
08049d50  00001507 R_386_JUMP_SLOT   0804873c   __gxx_personality_v0
08049d54  00001607 R_386_JUMP_SLOT   0804874c   _ZNSt8ios_base4InitD1E

在本例中,
print
是一个在运行时从共享库(我编写)加载的函数
readelf
能够显示其在
app
二进制文件中的位置信息。

otool-l test.o

使用:

  • 使用macports
    端口安装binutils
  • gobjdump-p/path/to/app
  • 使用:

  • 执行
    brew更新和&brew安装binutils
  • /usr/local/path/to/gobjdump-p/path/to/app
    #或按照说明将其添加到路径中
  • 当然,还有许多其他命令行选项。请注意,binutils端口警告说,安装它可能会导致其他端口无法构建。让它四处移植安装/查看某些东西/卸载端口仍然很方便

    令人惊讶的是,现在还没有一些本机工具来实现这一点。

    您尝试过ObjConv吗

    此实用程序可用于在所有32位和64位x86平台的COFF/PE、OMF、ELF和Mach-O(由Mac OS使用)格式之间转换对象文件。可以修改对象文件中的符号名称。可以跨平台构建、修改和转换函数库。可以转储对象文件和可执行文件。还包括一个非常好的反汇编程序,支持SSE4、AVX、FMA和XOP指令集

    附:包含源代码(GPL)。

    您可以试试

    ————————————————————————————

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    brew install binutils
    greadelf filepath
    
  • 安装自制软件
  • 使用自制软件安装binutils
  • binutils中的readelf称为
    greadelf

  • nm
    会做这个把戏吗?它不会打印足够的信息。不,它也不会做这个把戏。你可以用otool做这个,你只需要通过额外的选项。有关详细信息,请参阅手册。
    otool-Sv libtest.a
    更好,或
    otool-STMRIHGv
    适用于任何类型的库(
    *.a
    *.so
    *.dylib
    )<代码>otool在安装Xcode后可在
    /Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolchain/usr/bin/otool
    上找到。不幸的是,我需要使用
    。所以
    文件来完成这项工作。很高兴认识您,carlfilips,谢谢。我也很高兴认识您。另外,请看一下这个+1工具,感谢您为那些处理Drawer debug info+1的人提供的一个非常好的工具,它可以在Apple工具链中找到。安装Xcode后,可以在
    /Applications/Xcode.app/Contents/Developer/toolschains/xcodefault.xctoolschain/usr/bin/dwarfdump
    上找到它。虽然通常不需要完整路径,但您可以使用
    xcrun dwarfdump
    。您可以使用
    /usr/bin/dwarfdump
    作为快捷方式,这意味着您只需键入
    dwarfdump
    即可正常工作。如果您使用自制,则可以通过“brew安装binutils”安装。对于自制用户,如@louielouie所述,
    brew安装binutils
    然后所有工具都将以
    g
    作为前缀,即
    greadelf
    。看到了,我收到一条消息:
    gobjdump:Matching formats:elf32 littleram elf32 littleram symbian elf32 littleram vxworks
    @IgorGanapolsky您可以使用greadelf-Ws/path/to/your/so/filesgradelf需要一个flagUse
    greadelf-a
    -a
    标志代表所有转储一切的选项