Skip to content
字数
533 字
阅读时间
3 分钟

查看文件内容的工具

  1. hexdump
bash
hexdump filename # 默认格式显示 
hexdump -C filename # 更易读的格式,同时显示十六进制和ASCII
  1. xxd
bash
xxd filename # 标准十六进制显示 
xxd -b filename # 以二进制方式显示

我们以一个大家最最最熟悉的c语言程序来展示

c
#include<stdio.h>
int main(){
    printf("hello world\n");
    return 0;    
}

执行 hexdump -C hello.c

bash
00000000  23 69 6e 63 6c 75 64 65  3c 73 74 64 69 6f 2e 68  |#include<stdio.h|
00000010  3e 0a 69 6e 74 20 6d 61  69 6e 28 29 7b 0a 20 20  |>.int main(){.  |
00000020  20 20 70 72 69 6e 74 66  28 22 68 65 6c 6c 6f 20  |  printf("hello |
00000030  77 6f 72 6c 64 5c 6e 22  29 3b 0a 20 20 20 20 72  |world\n");.    r|
00000040  65 74 75 72 6e 20 30 3b  20 20 20 20 0a 7d        |eturn 0;    .}|
0000004e

hexdump -C 不直接显示中文是因为中文通常使用多字节编码(如 UTF-8、GBK 等),而 hexdump 的 ASCII 列默认只显示单字节可打印字符(0x20-0x7E 范围),多字节的中文字符会被拆分成多个字节,每个字节如果不在可打印范围内,就会显示为 .

hello 程序生命周期的一开始是一个高级 c 语言程序,它以文本形式保存,能被人直接理解,是程序尚未经过编译的初始状态,为了能在系统上运行 hello.c 程序,每条 c 语句都必须被其它程序转化为一系列的低级机器语言指令。

这些指令讲被按照一种成为可执行目标程序(executable object program)的格式打包好,并以二进制磁盘文件的形式存储起来。

我们可以使用 gcc 来编译 c 语言程序至可执行文件

bash
 gcc -o  hello hello.c

编译后让我们查看文件目录

bash
ls -lah
----------
-rwxr-xr-x  1 root root  16K Sep 17 12:05 hello
-rw-r--r--  1 root root   78 Sep 17 12:04 hello.c

将 c 语言源代码翻译成可执行文件的这个过程可以分为四个阶段

贡献者

文件历史