Linux下查看二进制文件

我们在日常开发中有时候会遇到查看二进制文件的场景,直接打开的话往往会让我们直呼外星人。此时我们就需要各种二进制查看工具了,帮助我们更好的查看二进制文件。

hexdump 查看二进制文件

hexdumplinux 下一个用于查看二进制文件的命令,它可以将二进制文件转换成十六进制的格式并打印出来,结果如下:
在这里插入图片描述
此外 hexdump 提供了各种选项实现数据格式的转换:

hexdump -C Main7.class 显示文件的 ASCII格式在这里插入图片描述

-C 命令可以显示对应字节的ASCII格式,并追加到最后面。

-C Canonical hex+ASCII display. Display the input offset in hexadecimal, followed by sixteen space-separated, two-column, hexadecimal bytes, followed by the same sixteen bytes in %_p format enclosed in ‘|’ characters.

hexdump -b Main7.class 以单字节转换为八进制显示目标二进制文件

在这里插入图片描述
-b选项会将所有数据以单字节为单位转换为十进制的格式显示,如这里第0个位置十六字节的fe对应的十进制为 312等。

xxd命令查看二进制文件

在这里插入图片描述
xxd 命令的直接使用与 hexdump -C的格式类似,打印的结果包含地址,十六进制格式和字符格式(单字节为单位)。

使用 od命令查看二进制文件

在这里插入图片描述
od命令与上述两种命令有所区别,是它的显示格式与前两者不同,通过 od 命令可以打印出二进制文件的 十六进制格式和 十进制的格式。

[root@node01 demo02]# od -tx1 -tc -Ax Main7.class
  • -tx1选项表示将文件中的字节以十六进制的形式列出来,每组一个字节(类似hexdump的-c选项)
  • -tc选项表示将文件中的ASCII码以字符形式列出来(和hexdump类似,输出结果最左边的一列是文件中的地址,默认以八进制显示)
  • -Ax选项要求以十六进制显示文件中的地址

-A, --address-radix=RADIX output format for file offsets; RADIX is one of [doxn], for Decimal, Octal, Hex or None

-A显示地址索引,根据指定的格式显示地址。示例:-Ax以十六进制格式显示地址;-Ad以十进制格式显示地址;-Ao以八进制格式显示地址;-An不显示地址。

-t, --format=TYPE output format or formats

-t 指定输出格式,可以指定多个输出格式,对应列举出来。示例:-tx1 -tc表示分别以十六进制,一字节为单位;和ASCII格式,一字节为单位显示数据,结果如下:
在这里插入图片描述
下面为一些 -t选项对应可以输出的格式
在这里插入图片描述

参考资料

shell命令:xxd命令
Linux: 查看二进制文件
xxd 介绍
linux 命令 xxd linux下查看二进制文件

<think>好的,用户想了解在Linux环境下使用GCC生成或处理二进制文件的相关方法。我需要先整理已有的信息,并参考提供的引用内容。 首先,用户提到的引用[2]中提到了使用objcopy工具从ELF文件生成纯二进制文件,命令是`objcopy -O binary data.elf new.bin`。这应该是一个关键点,需要包含在生成二进制文件的步骤里。 引用[3]提供了GCC二进制下载地址和环境变量配置的方法,比如设置PATH和LD_LIBRARY_PATH,这部分可能涉及GCC的安装和配置,用户可能需要这方面的指导,特别是如果用户需要特定版本的GCC的话。 另外,用户问题中还提到“处理二进制文件”,可能包括反汇编、查看二进制文件内容等操作。这里需要补充一些常用工具,比如objdump、hexdump或者readelf,这些工具可以帮助用户分析二进制文件的结构和内容。 接下来,我应该按照生成和处理两部分来组织回答。生成二进制文件的基本步骤包括编写源代码、编译、链接,然后使用objcopy生成纯二进制文件。处理部分则包括反汇编、查看文件信息、十六进制查看等。 还要注意用户可能对动态库和静态库的处理有疑问,比如如何生成静态库或动态库,这也属于GCC处理二进制文件的一部分。需要简要提及ar和gcc -shared命令的使用。 最后,确保引用正确的来源,比如引用[2]和[3],并在回答末尾添加相关问题,帮助用户进一步探索。例如,如何优化二进制文件大小,如何交叉编译等。 需要验证步骤的正确性,例如编译命令是否准确,objcopy的参数是否正确。同时,提醒用户环境变量配置的注意事项,如路径是否正确,是否需要替换成实际路径。 总结回答结构:分为生成二进制文件和处理二进制文件两部分,每部分列出具体步骤和命令,并附上示例代码。最后添加相关问题,引用标注在对应的位置。</think>### Linux GCC 生成与处理二进制文件教程 #### 一、生成二进制文件 1. **从源代码生成可执行文件** 使用GCC编译C/C++源代码时,默认会生成ELF格式的可执行文件。例如: ```bash gcc -o program main.c ``` 这会生成名为`program`的ELF文件[^2]。 2. **生成纯二进制文件(不含ELF头)** 若需生成纯二进制文件(如用于嵌入式系统),可使用`objcopy`工具: ```bash objcopy -O binary input.elf output.bin ``` 其中`input.elf`是编译后的ELF文件,`output.bin`为生成的二进制文件。 3. **交叉编译生成二进制文件** 若需为其他架构生成二进制文件(如ARM),需安装交叉编译工具链并指定目标平台: ```bash arm-linux-gnueabi-gcc -o program_arm main.c ``` #### 二、处理二进制文件 1. **查看二进制文件信息** - 使用`file`命令查看文件类型: ```bash file program ``` - 使用`readelf`查看ELF文件头信息: ```bash readelf -h program ``` 2. **反汇编二进制文件** 使用`objdump`反汇编可执行文件: ```bash objdump -d program ``` 3. **查看二进制文件内容** 使用`hexdump`以十六进制格式查看文件内容: ```bash hexdump -C output.bin ``` 4. **生成静态库与动态库** - 静态库(`.a`文件): ```bash ar rcs libmylib.a *.o ``` - 动态库(`.so`文件): ```bash gcc -shared -o libmylib.so *.o ``` #### 三、环境配置注意事项 若需使用特定版本的GCC,需配置环境变量(替换`YOURS`为实际路径): ```bash export PATH=$HOME/YOURS/gcc-5.4.0/bin:$PATH export LD_LIBRARY_PATH=$HOME/YOURS/gcc-5.4.0/lib:$HOME/YOURS/gcc-5.4.0/lib64:$LD_LIBRARY_PATH ``` 此配置确保系统优先使用自定义GCC版本[^3]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值