最近,在看《程序员的自我修养》一书,书中提到反汇编,使用到了binutils工具包。手头只有一台mac和一台装有win7的机器,并没有安装有linux的机器可用,想到mac 也属于unix系统,与linux大同小异,何况mac下也是用gcc编译,于是准备在mac下安装binutils试一试。

于是去gun官网下载了最新的binutils-2.22.tar.gz,接着解压,按照其README :1、./configure 2、make 3、make install 安装成功后。

运行objdump -h xxx.o以及readelf -h xxx.o 发现乱码问题,很是郁闷。随后各处查找,终于发现问题之所在,以下为摘抄高手的解释:

“Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件,目标代码,动态库,内核转储的文件格式。作为a.out格式的替代,Mach-O提供了更强的扩展性,并提升了符号表中信息的访问速度。Mach-O曾经为大部分基于Mach核心的操作系统所使用。NeXTSTEP,Darwin和Mac OS X等系统使用这种格式作为其原生可执行文件,库和目标代码的格式。而同样使用GNU Mach作为其微内核的GNU Hurd系统则使用ELF而非Mach-O作为其标准的二进制文件格式。”

在linux环境下,/usr/include目录下有elf.h文件,会有针对elf文件格式的结构体定义,在mac下,则有一个对应的mac-o目录,里面也有类似的文件。

mac下要查看可执行文件或者动态库的一些信息,就只能通过otool这样的工具来进行,不如readelf这样的熟悉和方便,另外mac也不用so这样的名称,而使用dylib,mac系统终究是来源于bsd。 主要意思是说linux和mac中的elf文件格式不太一样导致部分出现乱码,mac下只能采用otool

Uage: otool [-fahlLDtdorSTMRIHvVcXm] ... -f print the fat headers -a print the archive header -h print the mach header -l print the load commands -L print shared libraries used -D print shared library id name -t print the text section (disassemble with -v) -p  start dissassemble from routine name -s print contents of section -d print the data section -o print the Objective-C segment -r print the relocation entries -S print the table of contents of a library -T print the table of contents of a dynamic shared library -M print the module table of a dynamic shared library -R print the reference table of a dynamic shared library -I print the indirect symbol table -H print the two-level hints table -v print verbosely (symbolically) when possible -V print disassembled operands symbolically -c print argument strings of a core file -X print no leading addresses or headers -m don't use archive(member) syntax -B force Thumb disassembly (ARM objects only)

linux binutils,关于mac binutils相关推荐

  1. Linux下修改MAC地址总结

    偶尔会用到这个知识点,久了不用又会记不住,所以记之,方便以后查询. Linux下修改MAC地址 方法一: 1.关闭网卡设备 ifconfig eth0 down 2.修改MAC地址 ifconfig ...

  2. linux桌面环境 mac os,在Windows或Linux桌面上使用Mac OS Dashboard Widget | MOS86

    Windows Vista中引入了 Gadgets,并在Windows 7中继续使用.它们允许您从最新的新闻更新到月球的各个阶段查看各种信息,并在桌面上使用一些有用的实用程序.我们以前写过一个程序,允 ...

  3. (转)Windows系统、Linux系统 和 Mac OS操作系统 历史由来 与 区别?

    目录 1 UNIX 由来 2 Linux 由来 3 Windows与Linux的主要区别 4 关于Linux的一些疑惑 参考资料 目前常见的三大操作系统:Windows系统.Linux系统 和 Mac ...

  4. 网关屏蔽mac地址,linux下修改mac地址方法

    局域网里有一台机器,同一网段内的机器,只有部分能够ping通,也无法ping通网关,现象很奇怪,尝试过修改IP,重启网络服务,都无法解决问题. 最后怀疑是不是网关将该机器mac地址给屏蔽掉了,因此修改 ...

  5. linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国

    在向你展示如何在 Linux 中更改 Mac 地址之前,让我们首先讨论为什么要更改它.-- Dimitrios Savvopoulos 在向你展示如何在 Linux 中更改 MAC 地址之前,让我们首 ...

  6. linux如何查看mac地址_查看mac地址 linux_linux查看mac地址

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XNXpHnwK-1660924515521)(http://img2.nlrsq.com/upfile/b13fd480 ...

  7. 透明加密支持linux吗,IP-guard文档透明加密软件|文档防泄密|数据加密|Linux系统加密|Mac苹果系统文档加密...

    IP-guard文档透明加密软件|文档防泄密|数据加密|Linux系统加密|Mac苹果系统文档加密 发布日期:2018-06-02 IP-guard全向文档加密,采用高强度的加密算法,将各种格式的电子 ...

  8. Linux调整网卡MAC地址(指令)

    Linux调整网卡MAC地址(指令) 有的时候需要使用欺骗的方法为电脑设置新的mac,比如存在上网网卡限制,或者想要隐藏自己的真实mac地址.这里列举三种修改mac的方法,适用于Debian系的Lin ...

  9. linux内核设置mac地址,Linux下如何修改网卡MAC地址

    Red Hat Linux下如何修改网卡MAC地址 OS版本:Red Hat Enterprise Linux AS4 核心:Kernel 2.6.9-42 网上有很多关于linux下修改MAC地址的 ...

最新文章

  1. C# 调用python
  2. xargs -i和-I的区别【转】
  3. ai python 面试_面试分享系列 | 17道Python面试题,让你在求职中无往不利
  4. linux 延展集群如何设置,OCaml 4.11.0 发布,将函数式语言 Caml 在面向对象上进行延展...
  5. 技术文件服务器搭建,搭建文件服务器_mob604756e49326的技术博客_51CTO博客
  6. InDesign 教程,如何创建沉浸式文档?
  7. 单列变双列css_css – 右对齐双列布局丢失水平滚动条
  8. python版植物大战僵尸源码_『原创』植物大战僵尸分析及Python辅助实现
  9. Spyder 运行时kernels启动报错
  10. bootloader学习笔记---第二篇
  11. ICPC 2017 Daejeon-Slot Machines
  12. 利好消息再释放 重卡自动驾驶的智慧物流“掘金”计划
  13. Ubuntu 14.04 LTS 的安装和配置以及各种问题的解决
  14. 200行Perl 语言实现 VCD 转ATE测试pattern ---pattern的解析
  15. 文字图片居中html代码,文字和图片居中的HTML代码怎么写?
  16. 基于android平台的出题软件---- 每日30题
  17. 人造大理石行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  18. grads环境变量的设置
  19. 华为OD两轮技术面试
  20. 网站优化问题:雅虎网站优化35条

热门文章

  1. 测 试 基 础 知 识
  2. 将数组转为xml格式
  3. Arduino ESP8266 MQTT 阿里 腾讯 连接示例
  4. 关于win7下的创新A系列声卡设置,完美解决麦克不能实时加混音问题!
  5. 计算机设置从光盘启动怎么办,如何设置光盘启动计算机
  6. 输入5个同学的3门课程成绩,计算各门课程的总分及平均分
  7. MTK 平台camera如何dump image buffer大全
  8. C# 未找到类型“***”上的构造函数异常原因
  9. 常见的电子元器件的代表字母
  10. php 插入ed2k,eD2k链接