From 82a479a6c4358484aa5b55ec8b06e9c672a34376 Mon Sep 17 00:00:00 2001 From: firmianay Date: Thu, 20 Jul 2017 23:44:41 +0800 Subject: [PATCH] update --- doc/1.5.1_c_basic.md | 4 ++- doc/1.5.3_elf.md | 60 ++++++++++++++++++++++++++++++++++++++++++ pic/1.5.3_elfdemo.png | Bin 0 -> 33940 bytes 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 pic/1.5.3_elfdemo.png diff --git a/doc/1.5.1_c_basic.md b/doc/1.5.1_c_basic.md index e08018e..25da7a0 100644 --- a/doc/1.5.1_c_basic.md +++ b/doc/1.5.1_c_basic.md @@ -1,6 +1,8 @@ # C 语言基础 -## 从源代码到可执行文件 +- [从源代码到可执行文件](#compile) + +## 从源代码到可执行文件 我们以经典著作《The C Programming Language》中的第一个程序 “Hello World” 为例,讲解 Linux 下 GCC 的编译过程。 ```c diff --git a/doc/1.5.3_elf.md b/doc/1.5.3_elf.md index 3ecb13e..5224387 100644 --- a/doc/1.5.3_elf.md +++ b/doc/1.5.3_elf.md @@ -1 +1,61 @@ # Linux ELF + +- [一个实例](#elfdemo) +- [目标文件](#object) + + +## 一个实例 +在 *1.5.1节 C语言基础* 中我们看到了从源代码到可执行文件的全过程,现在我们来看一个更复杂的例子。 +```text +#include + +int global_init_var = 10; +int global_uninit_var; + +void func(int sum) { + printf("%d\n", sum); +} + +void main(void) { + static int local_static_init_var = 20; + static int local_static_uninit_var; + + int local_init_val = 30; + int local_uninit_var; + + func(global_init_var + local_init_val + + local_static_init_var ); +} +``` + +然后分别执行下列命令生成两个文件: +```text +gcc -c elfDemo.c -o elfDemo.o + +gcc elfDemo.c -o elfDemo +``` +使用 ldd 命令打印所依赖的共享库: +```text +$ ldd elfDemo + linux-gate.so.1 (0xf76e3000) + libc.so.6 => /usr/lib32/libc.so.6 (0xf74e5000) + /lib/ld-linux.so.2 (0xf76e5000) +``` + +此时他们的结构如图: +![](../pic/1.5.3_elfdemo.png) + +可以看到,ELF 文件的开头是一个“文件头”,之后分别是代码段、数据段和.bss段。程序源代码编译后,执行语句变成机器指令,保存在.text段;已初始化的全局变量和局部静态变量都保存在.data段;未初始化的全局变量和局部静态变量则放在.bss段。 + + +## 目标文件 +ELF(Executable Linkable Format)是 Linux 的可执行文件格式,是 COFF (Common file format)格式的变种。目标文件主要分为三种类型: +- 可重定位文件(Relocatable file) + - 包含了代码和数据,可以和其他目标文件链接生成一个可执行文件或共享目标文件。 + - elfDemo.o +- 可执行文件(Executable File) + - 包含了可以直接执行的文件。 + - elfDemo +- 共享目标文件(Shared Object File) + - 包含了用于链接的代码和数据,分两种情况。一种是链接器将其与其他的可重定位文件和共享目标文件链接起来,生产新的目标文件。另一种是动态链接器将多个共享目标文件与可执行文件结合,作为进程映像的一部分。 + - libc.so.6 diff --git a/pic/1.5.3_elfdemo.png b/pic/1.5.3_elfdemo.png new file mode 100644 index 0000000000000000000000000000000000000000..31cf4bab9a0eb29780d7ce72686fcce50e6e8801 GIT binary patch literal 33940 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 Kmp!+5_x}LJgD|H6 literal 0 HcmV?d00001