C/C++程序编译成可执行程序步骤图文源码详解

2023-05-16

一个C++程序被编译为目标程序的过程中经历了四个部分,分别是预处理、编译、汇编、链接。

下面将通过一个简单的C++代码分别执行预处理、编译、汇编、链接四个步骤后的结果和基本原理讲解。

注意:博主是在ubuntu20.0下编译和运行,g++版本是9.3.0

一、一个简单的C++代码

下面是一段简单的C++代码

Test1.h

#ifndef TEST1_H_
#define TEST1_H_

struct Test1
{
    Test1();
    int getVar() const;

private:
    int var;
};

#endif /* TEST1_H_ */

Test1.cpp

#include "Test1.h"

Test1::Test1()
 : var(100)
{
}

int Test1::getVar() const
{
    return var;
}

main.cpp

#include "Test1.h"

int main() {
    Test1{}.getVar();

    return 0;
}

1.1预处理

预处理主要对Test1.cpp、main.cpp和相关的头文件进行预编译成一个Test1.ii、main.ii文件。该步骤主要操作是对一些宏进行替换以及一些#include包含的头文件进行替换。下面是在ubuntu20.0下通过g++ -E命令生成预处理后的文件(注意:一般c++预处理后文件格式为*.ii,C语言是*.i)

g++ -E main.cpp -o main.ii

  文件main.ii

# 1 "main.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "main.cpp"
# 1 "Test1.h" 1

struct Test1
{
    Test1();
    int getVar() const;

private:
    int var;
};
# 2 "main.cpp" 2

int main() {
    Test1{}.getVar();

    return 0;
}
g++ -E Test1.cpp -o Test1.ii

文件Test1.ii

# 1 "Test1.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "Test1.cpp"
# 1 "Test1.h" 1

struct Test1
{
    Test1();
    int getVar() const;

private:
    int var;
};
# 2 "Test1.cpp" 2

Test1::Test1()
 : var(100)
{
}

int Test1::getVar() const
{
    return var;
}

由上面的Test1.ii和main.ii两个文件可以看出,进过预处理后*.ii文件不包含任何宏定义,因为所有宏已经被展开,并且包含的文件也已经被插入到main.ii文件中。

1.1.1预处理阶段功能总结

预编译过程主要处理那些源代码文件中的以“#”开始的预编译指令。比如“#include”、“#define”等,处理规则如下:

  • 将所有的“#define”删除,并且展开所有的宏定义
  • 处理所有条件预编译指令,比如“#if”、“#ifdef”、“#elif”、“#else”、“#endif”
  • 处理“#include”预编译指令,将被包含的文件插入到该预编译指令的位置。注意,这个过程是递归进行的,也就是说被包含的文件可能还包含其它文件
  • 删除所有的注释“//”和“/* */”
  • 添加行号和文件名标识,比如:“  # 1 "Test1.h" 1  ”,以便编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时能够显示行号
  • 保留所有的#pragma编译器指令,因为编译器需要使用它们

1.2编译

编译就是对预处理完后的文件进行一系列词法分析、语法分析、语义分析及优化后生成相关的汇编代码文件。

一般将预处理和汇编合并成一个步骤,linux下使用一个cc1plus来完成这两个步骤。

 下面是用编译生成main.s文件命令

g++ -S main.ii -o main.s

main.s

	.file	"main.cpp"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$16, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	leaq	-12(%rbp), %rax
	movq	%rax, %rdi
	call	_ZN5Test1C1Ev@PLT
	leaq	-12(%rbp), %rax
	movq	%rax, %rdi
	call	_ZNK5Test16getVarEv@PLT
	movl	$0, %eax
	movq	-8(%rbp), %rdx
	xorq	%fs:40, %rdx
	je	.L3
	call	__stack_chk_fail@PLT
.L3:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

Test1.s

g++ -S Test1.ii -o Test1.s
	.file	"Test1.cpp"
	.text
	.align 2
	.globl	_ZN5Test1C2Ev
	.type	_ZN5Test1C2Ev, @function
_ZN5Test1C2Ev:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	-8(%rbp), %rax
	movl	$100, (%rax)
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	_ZN5Test1C2Ev, .-_ZN5Test1C2Ev
	.globl	_ZN5Test1C1Ev
	.set	_ZN5Test1C1Ev,_ZN5Test1C2Ev
	.align 2
	.globl	_ZNK5Test16getVarEv
	.type	_ZNK5Test16getVarEv, @function
_ZNK5Test16getVarEv:
.LFB3:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movq	%rdi, -8(%rbp)
	movq	-8(%rbp), %rax
	movl	(%rax), %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE3:
	.size	_ZNK5Test16getVarEv, .-_ZNK5Test16getVarEv
	.ident	"GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	 1f - 0f
	.long	 4f - 1f
	.long	 5
0:
	.string	 "GNU"
1:
	.align 8
	.long	 0xc0000002
	.long	 3f - 2f
2:
	.long	 0x3
3:
	.align 8
4:

1.2.1编译总结

由上面main.s和Test1.s两个汇编代码文件可知,编译阶段生成的是汇编代码文件。g++本质上只是后台程序的包装,根据不同参数(-E、-S、-c)要求调用预处理编译程序cc1plus、汇编器as、连接器ld。

1.3汇编

汇编器将汇编代码转化为机器可以识别和执行的指令(二进制代码),每条汇编语句几乎都对应一条机器指令。

main.o的16进制代码分析可参考这篇博客:小湿妹问沃什么是可执行程序?(全网最简洁,必看,错过后悔终生!!!)

下面是生成目标文件main.o指令

g++ -c main.s -o main.o

#或者下面命令as
# $as main.s -o main.o

main.o文件

tjq@ubuntu:~/eclipse-workspace/Test1/src$ hexdump main.o -C
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  01 00 3e 00 01 00 00 00  00 00 00 00 00 00 00 00  |..>.............|
00000020  00 00 00 00 00 00 00 00  e0 02 00 00 00 00 00 00  |................|
00000030  00 00 00 00 40 00 00 00  00 00 40 00 0c 00 0b 00  |....@.....@.....|
00000040  55 48 89 e5 48 83 ec 10  48 8d 45 fc 48 89 c7 e8  |UH..H...H.E.H...|
00000050  00 00 00 00 48 8d 45 fc  48 89 c7 e8 00 00 00 00  |....H.E.H.......|
00000060  b8 00 00 00 00 c9 c3 00  47 43 43 3a 20 28 55 62  |........GCC: (Ub|
00000070  75 6e 74 75 20 39 2e 33  2e 30 2d 31 37 75 62 75  |untu 9.3.0-17ubu|
00000080  6e 74 75 31 7e 32 30 2e  30 34 29 20 39 2e 33 2e  |ntu1~20.04) 9.3.|
00000090  30 00 00 00 00 00 00 00  14 00 00 00 00 00 00 00  |0...............|
000000a0  01 7a 52 00 01 78 10 01  1b 0c 07 08 90 01 00 00  |.zR..x..........|
000000b0  1c 00 00 00 1c 00 00 00  00 00 00 00 27 00 00 00  |............'...|
000000c0  00 41 0e 10 86 02 43 0d  06 62 0c 07 08 00 00 00  |.A....C..b......|
000000d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000e0  00 00 00 00 00 00 00 00  01 00 00 00 04 00 f1 ff  |................|
000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000100  00 00 00 00 03 00 01 00  00 00 00 00 00 00 00 00  |................|
00000110  00 00 00 00 00 00 00 00  00 00 00 00 03 00 03 00  |................|
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000130  00 00 00 00 03 00 04 00  00 00 00 00 00 00 00 00  |................|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 03 00 06 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000160  00 00 00 00 03 00 07 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 03 00 05 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  0a 00 00 00 12 00 01 00  00 00 00 00 00 00 00 00  |................|
000001a0  27 00 00 00 00 00 00 00  0f 00 00 00 10 00 00 00  |'...............|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  25 00 00 00 10 00 00 00  00 00 00 00 00 00 00 00  |%...............|
000001d0  00 00 00 00 00 00 00 00  33 00 00 00 10 00 00 00  |........3.......|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 6d 61 69 6e 2e 63 70  70 00 6d 61 69 6e 00 5f  |.main.cpp.main._|
00000200  47 4c 4f 42 41 4c 5f 4f  46 46 53 45 54 5f 54 41  |GLOBAL_OFFSET_TA|
00000210  42 4c 45 5f 00 5f 5a 4e  35 54 65 73 74 31 43 31  |BLE_._ZN5Test1C1|
00000220  45 76 00 5f 5a 4e 4b 35  54 65 73 74 31 36 67 65  |Ev._ZNK5Test16ge|
00000230  74 56 61 72 45 76 00 00  10 00 00 00 00 00 00 00  |tVarEv..........|
00000240  04 00 00 00 0a 00 00 00  fc ff ff ff ff ff ff ff  |................|
00000250  1c 00 00 00 00 00 00 00  04 00 00 00 0b 00 00 00  |................|
00000260  fc ff ff ff ff ff ff ff  20 00 00 00 00 00 00 00  |........ .......|
00000270  02 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00000280  00 2e 73 79 6d 74 61 62  00 2e 73 74 72 74 61 62  |..symtab..strtab|
00000290  00 2e 73 68 73 74 72 74  61 62 00 2e 72 65 6c 61  |..shstrtab..rela|
000002a0  2e 74 65 78 74 00 2e 64  61 74 61 00 2e 62 73 73  |.text..data..bss|
000002b0  00 2e 63 6f 6d 6d 65 6e  74 00 2e 6e 6f 74 65 2e  |..comment..note.|
000002c0  47 4e 55 2d 73 74 61 63  6b 00 2e 72 65 6c 61 2e  |GNU-stack..rela.|
000002d0  65 68 5f 66 72 61 6d 65  00 00 00 00 00 00 00 00  |eh_frame........|
000002e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000320  20 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  | ...............|
00000330  00 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000340  27 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |'...............|
00000350  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000360  1b 00 00 00 04 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000370  00 00 00 00 00 00 00 00  38 02 00 00 00 00 00 00  |........8.......|
00000380  30 00 00 00 00 00 00 00  09 00 00 00 01 00 00 00  |0...............|
00000390  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
000003a0  26 00 00 00 01 00 00 00  03 00 00 00 00 00 00 00  |&...............|
000003b0  00 00 00 00 00 00 00 00  67 00 00 00 00 00 00 00  |........g.......|
000003c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000003d0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000003e0  2c 00 00 00 08 00 00 00  03 00 00 00 00 00 00 00  |,...............|
000003f0  00 00 00 00 00 00 00 00  67 00 00 00 00 00 00 00  |........g.......|
00000400  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000410  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000420  31 00 00 00 01 00 00 00  30 00 00 00 00 00 00 00  |1.......0.......|
00000430  00 00 00 00 00 00 00 00  67 00 00 00 00 00 00 00  |........g.......|
00000440  2b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |+...............|
00000450  01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000460  3a 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |:...............|
00000470  00 00 00 00 00 00 00 00  92 00 00 00 00 00 00 00  |................|
00000480  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000490  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000004a0  4f 00 00 00 01 00 00 00  02 00 00 00 00 00 00 00  |O...............|
000004b0  00 00 00 00 00 00 00 00  98 00 00 00 00 00 00 00  |................|
000004c0  38 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |8...............|
000004d0  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000004e0  4a 00 00 00 04 00 00 00  40 00 00 00 00 00 00 00  |J.......@.......|
000004f0  00 00 00 00 00 00 00 00  68 02 00 00 00 00 00 00  |........h.......|
00000500  18 00 00 00 00 00 00 00  09 00 00 00 07 00 00 00  |................|
00000510  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00000520  01 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00000530  00 00 00 00 00 00 00 00  d0 00 00 00 00 00 00 00  |................|
00000540  20 01 00 00 00 00 00 00  0a 00 00 00 08 00 00 00  | ...............|
00000550  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00000560  09 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
00000570  00 00 00 00 00 00 00 00  f0 01 00 00 00 00 00 00  |................|
00000580  47 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |G...............|
00000590  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000005a0  11 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
000005b0  00 00 00 00 00 00 00 00  80 02 00 00 00 00 00 00  |................|
000005c0  59 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |Y...............|
000005d0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000005e0

下面是生成目标文件Test1.o指令

g++ -c Test1.s -o Test1.o

Test1.o文件

tjq@ubuntu:~/eclipse-workspace/Test1/src$ hexdump Test1.o -C
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  01 00 3e 00 01 00 00 00  00 00 00 00 00 00 00 00  |..>.............|
00000020  00 00 00 00 00 00 00 00  10 03 00 00 00 00 00 00  |................|
00000030  00 00 00 00 40 00 00 00  00 00 40 00 0c 00 0b 00  |....@.....@.....|
00000040  f3 0f 1e fa 55 48 89 e5  48 89 7d f8 48 8b 45 f8  |....UH..H.}.H.E.|
00000050  c7 00 64 00 00 00 90 5d  c3 90 f3 0f 1e fa 55 48  |..d....]......UH|
00000060  89 e5 48 89 7d f8 48 8b  45 f8 8b 00 5d c3 00 47  |..H.}.H.E...]..G|
00000070  43 43 3a 20 28 55 62 75  6e 74 75 20 39 2e 33 2e  |CC: (Ubuntu 9.3.|
00000080  30 2d 31 37 75 62 75 6e  74 75 31 7e 32 30 2e 30  |0-17ubuntu1~20.0|
00000090  34 29 20 39 2e 33 2e 30  00 00 00 00 00 00 00 00  |4) 9.3.0........|
000000a0  04 00 00 00 10 00 00 00  05 00 00 00 47 4e 55 00  |............GNU.|
000000b0  02 00 00 c0 04 00 00 00  03 00 00 00 00 00 00 00  |................|
000000c0  14 00 00 00 00 00 00 00  01 7a 52 00 01 78 10 01  |.........zR..x..|
000000d0  1b 0c 07 08 90 01 00 00  1c 00 00 00 1c 00 00 00  |................|
000000e0  00 00 00 00 19 00 00 00  00 45 0e 10 86 02 43 0d  |.........E....C.|
000000f0  06 50 0c 07 08 00 00 00  1c 00 00 00 3c 00 00 00  |.P..........<...|
00000100  00 00 00 00 14 00 00 00  00 45 0e 10 86 02 43 0d  |.........E....C.|
00000110  06 4b 0c 07 08 00 00 00  00 00 00 00 00 00 00 00  |.K..............|
00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000130  01 00 00 00 04 00 f1 ff  00 00 00 00 00 00 00 00  |................|
00000140  00 00 00 00 00 00 00 00  00 00 00 00 03 00 01 00  |................|
00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000160  00 00 00 00 03 00 02 00  00 00 00 00 00 00 00 00  |................|
00000170  00 00 00 00 00 00 00 00  00 00 00 00 03 00 03 00  |................|
00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 03 00 05 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 06 00  |................|
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001c0  00 00 00 00 03 00 07 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 04 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  0b 00 00 00 12 00 01 00  00 00 00 00 00 00 00 00  |................|
00000200  19 00 00 00 00 00 00 00  19 00 00 00 12 00 01 00  |................|
00000210  00 00 00 00 00 00 00 00  19 00 00 00 00 00 00 00  |................|
00000220  27 00 00 00 12 00 01 00  1a 00 00 00 00 00 00 00  |'...............|
00000230  14 00 00 00 00 00 00 00  00 54 65 73 74 31 2e 63  |.........Test1.c|
00000240  70 70 00 5f 5a 4e 35 54  65 73 74 31 43 32 45 76  |pp._ZN5Test1C2Ev|
00000250  00 5f 5a 4e 35 54 65 73  74 31 43 31 45 76 00 5f  |._ZN5Test1C1Ev._|
00000260  5a 4e 4b 35 54 65 73 74  31 36 67 65 74 56 61 72  |ZNK5Test16getVar|
00000270  45 76 00 00 00 00 00 00  20 00 00 00 00 00 00 00  |Ev...... .......|
00000280  02 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00000290  40 00 00 00 00 00 00 00  02 00 00 00 02 00 00 00  |@...............|
000002a0  1a 00 00 00 00 00 00 00  00 2e 73 79 6d 74 61 62  |..........symtab|
000002b0  00 2e 73 74 72 74 61 62  00 2e 73 68 73 74 72 74  |..strtab..shstrt|
000002c0  61 62 00 2e 74 65 78 74  00 2e 64 61 74 61 00 2e  |ab..text..data..|
000002d0  62 73 73 00 2e 63 6f 6d  6d 65 6e 74 00 2e 6e 6f  |bss..comment..no|
000002e0  74 65 2e 47 4e 55 2d 73  74 61 63 6b 00 2e 6e 6f  |te.GNU-stack..no|
000002f0  74 65 2e 67 6e 75 2e 70  72 6f 70 65 72 74 79 00  |te.gnu.property.|
00000300  2e 72 65 6c 61 2e 65 68  5f 66 72 61 6d 65 00 00  |.rela.eh_frame..|
00000310  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000350  1b 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  |................|
00000360  00 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000370  2e 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000380  02 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000390  21 00 00 00 01 00 00 00  03 00 00 00 00 00 00 00  |!...............|
000003a0  00 00 00 00 00 00 00 00  6e 00 00 00 00 00 00 00  |........n.......|
000003b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000003c0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000003d0  27 00 00 00 08 00 00 00  03 00 00 00 00 00 00 00  |'...............|
000003e0  00 00 00 00 00 00 00 00  6e 00 00 00 00 00 00 00  |........n.......|
000003f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000400  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000410  2c 00 00 00 01 00 00 00  30 00 00 00 00 00 00 00  |,.......0.......|
00000420  00 00 00 00 00 00 00 00  6e 00 00 00 00 00 00 00  |........n.......|
00000430  2b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |+...............|
00000440  01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000450  35 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |5...............|
00000460  00 00 00 00 00 00 00 00  99 00 00 00 00 00 00 00  |................|
00000470  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000480  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000490  45 00 00 00 07 00 00 00  02 00 00 00 00 00 00 00  |E...............|
000004a0  00 00 00 00 00 00 00 00  a0 00 00 00 00 00 00 00  |................|
000004b0  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  | ...............|
000004c0  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000004d0  5d 00 00 00 01 00 00 00  02 00 00 00 00 00 00 00  |]...............|
000004e0  00 00 00 00 00 00 00 00  c0 00 00 00 00 00 00 00  |................|
000004f0  58 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |X...............|
00000500  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000510  58 00 00 00 04 00 00 00  40 00 00 00 00 00 00 00  |X.......@.......|
00000520  00 00 00 00 00 00 00 00  78 02 00 00 00 00 00 00  |........x.......|
00000530  30 00 00 00 00 00 00 00  09 00 00 00 07 00 00 00  |0...............|
00000540  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00000550  01 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00000560  00 00 00 00 00 00 00 00  18 01 00 00 00 00 00 00  |................|
00000570  20 01 00 00 00 00 00 00  0a 00 00 00 09 00 00 00  | ...............|
00000580  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00000590  09 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
000005a0  00 00 00 00 00 00 00 00  38 02 00 00 00 00 00 00  |........8.......|
000005b0  3b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |;...............|
000005c0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000005d0  11 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
000005e0  00 00 00 00 00 00 00 00  a8 02 00 00 00 00 00 00  |................|
000005f0  67 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |g...............|
00000600  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000610

1.3.1汇编总结

由汇编文件main.o和Test1.o文件可知,汇编器将汇编代码main.s和Test1.s生成目标文件main.o和Test1.o。目标文件main.o里面调用的类Test1::getVar()代码还没有跟实际的物理地址关联起来,暂时用0000 0000替代,故需要链接器链接后,才能跟实际成员方法地址关联。

1.3.2编译和汇编总结

1.2.1编译总结

编译一般分为6个步骤:扫描、语法分析、语义分析、源代码优化、代码生成、目标代码优化

  • 词法分析:首先将源代码输入扫描器,运用一种类似有限状态机算法将字符分割成一系列记号(Token),比如(var, +, 5, 10),用lex程序可以实现词法扫描
  • 语法分析:语法分析器将扫描器产生的记号生成语法树进行分析。语法树的非叶子节点一般是各种运算符或者括号,确定性的数字常量作为叶子节点。可以用工具yacc(Yet Another Compiler Compiler)对输入的标识生成语法树。
  • 语义分析:语义分析对语法树的表达式有效性进行分析,分为静态语义和动态语义;静态语义包括声明和类型匹配,动态语义是在运行期进行分析,通过语义分析语法树每个节点都标识了具体类型比如int
  • 中间语言生成:编译器会对初始的源码进行优化,比如父节点+,叶子节点8和2,即表达式8+2会会优化为一个节点10;常见的中间代码有三地址码(x = y op z)和P-代码
  • 目标代码生成与优化:生成的目标代码*.o的成员变量和方法是没有确定的,只有在链接阶段才会确定具体的物理地址;由于不同的机器生成的目标代码不同,所以优化十分复杂

1.4链接

链接器将所有目标文件main.o、Test1.o和库通过一定逻辑组织拼接成可执行程序main。

下面是链接生成可执行程序main的命令:

g++ Test1.o main.o -o main

 可执行程序main代码如下:

tjq@ubuntu:~/eclipse-workspace/Test1/src$ hexdump main -C
00000000  7f 45 4c 46 02 01 01 00  00 00 00 00 00 00 00 00  |.ELF............|
00000010  03 00 3e 00 01 00 00 00  40 10 00 00 00 00 00 00  |..>.....@.......|
00000020  40 00 00 00 00 00 00 00  80 39 00 00 00 00 00 00  |@........9......|
00000030  00 00 00 00 40 00 38 00  0b 00 40 00 1c 00 1b 00  |....@.8...@.....|
00000040  06 00 00 00 04 00 00 00  40 00 00 00 00 00 00 00  |........@.......|
00000050  40 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00  |@.......@.......|
00000060  68 02 00 00 00 00 00 00  68 02 00 00 00 00 00 00  |h.......h.......|
00000070  08 00 00 00 00 00 00 00  03 00 00 00 04 00 00 00  |................|
00000080  a8 02 00 00 00 00 00 00  a8 02 00 00 00 00 00 00  |................|
00000090  a8 02 00 00 00 00 00 00  1c 00 00 00 00 00 00 00  |................|
000000a0  1c 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
000000b0  01 00 00 00 04 00 00 00  00 00 00 00 00 00 00 00  |................|
000000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000000d0  30 05 00 00 00 00 00 00  30 05 00 00 00 00 00 00  |0.......0.......|
000000e0  00 10 00 00 00 00 00 00  01 00 00 00 05 00 00 00  |................|
000000f0  00 10 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00000100  00 10 00 00 00 00 00 00  05 02 00 00 00 00 00 00  |................|
00000110  05 02 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00000120  01 00 00 00 04 00 00 00  00 20 00 00 00 00 00 00  |......... ......|
00000130  00 20 00 00 00 00 00 00  00 20 00 00 00 00 00 00  |. ....... ......|
00000140  80 01 00 00 00 00 00 00  80 01 00 00 00 00 00 00  |................|
00000150  00 10 00 00 00 00 00 00  01 00 00 00 06 00 00 00  |................|
00000160  f0 2d 00 00 00 00 00 00  f0 3d 00 00 00 00 00 00  |.-.......=......|
00000170  f0 3d 00 00 00 00 00 00  20 02 00 00 00 00 00 00  |.=...... .......|
00000180  28 02 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |(...............|
00000190  02 00 00 00 06 00 00 00  00 2e 00 00 00 00 00 00  |................|
000001a0  00 3e 00 00 00 00 00 00  00 3e 00 00 00 00 00 00  |.>.......>......|
000001b0  c0 01 00 00 00 00 00 00  c0 01 00 00 00 00 00 00  |................|
000001c0  08 00 00 00 00 00 00 00  04 00 00 00 04 00 00 00  |................|
000001d0  c4 02 00 00 00 00 00 00  c4 02 00 00 00 00 00 00  |................|
000001e0  c4 02 00 00 00 00 00 00  44 00 00 00 00 00 00 00  |........D.......|
000001f0  44 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |D...............|
00000200  50 e5 74 64 04 00 00 00  04 20 00 00 00 00 00 00  |P.td..... ......|
00000210  04 20 00 00 00 00 00 00  04 20 00 00 00 00 00 00  |. ....... ......|
00000220  4c 00 00 00 00 00 00 00  4c 00 00 00 00 00 00 00  |L.......L.......|
00000230  04 00 00 00 00 00 00 00  51 e5 74 64 06 00 00 00  |........Q.td....|
00000240  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000260  00 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00000270  52 e5 74 64 04 00 00 00  f0 2d 00 00 00 00 00 00  |R.td.....-......|
00000280  f0 3d 00 00 00 00 00 00  f0 3d 00 00 00 00 00 00  |.=.......=......|
00000290  10 02 00 00 00 00 00 00  10 02 00 00 00 00 00 00  |................|
000002a0  01 00 00 00 00 00 00 00  2f 6c 69 62 36 34 2f 6c  |......../lib64/l|
000002b0  64 2d 6c 69 6e 75 78 2d  78 38 36 2d 36 34 2e 73  |d-linux-x86-64.s|
000002c0  6f 2e 32 00 04 00 00 00  14 00 00 00 03 00 00 00  |o.2.............|
000002d0  47 4e 55 00 50 cf 6e 94  31 9f ea 7c d5 ad 9d a4  |GNU.P.n.1..|....|
000002e0  19 a7 1a 9b cb 5a 64 13  04 00 00 00 10 00 00 00  |.....Zd.........|
000002f0  01 00 00 00 47 4e 55 00  00 00 00 00 03 00 00 00  |....GNU.........|
00000300  02 00 00 00 00 00 00 00  02 00 00 00 05 00 00 00  |................|
00000310  01 00 00 00 06 00 00 00  00 00 81 00 00 00 00 00  |................|
00000320  05 00 00 00 00 00 00 00  d1 65 ce 6d 00 00 00 00  |.........e.m....|
00000330  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000340  00 00 00 00 00 00 00 00  38 00 00 00 20 00 00 00  |........8... ...|
00000350  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000360  1a 00 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |................|
00000370  00 00 00 00 00 00 00 00  54 00 00 00 20 00 00 00  |........T... ...|
00000380  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000390  63 00 00 00 20 00 00 00  00 00 00 00 00 00 00 00  |c... ...........|
000003a0  00 00 00 00 00 00 00 00  0b 00 00 00 22 00 00 00  |............"...|
000003b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000003c0  00 6c 69 62 63 2e 73 6f  2e 36 00 5f 5f 63 78 61  |.libc.so.6.__cxa|
000003d0  5f 66 69 6e 61 6c 69 7a  65 00 5f 5f 6c 69 62 63  |_finalize.__libc|
000003e0  5f 73 74 61 72 74 5f 6d  61 69 6e 00 47 4c 49 42  |_start_main.GLIB|
000003f0  43 5f 32 2e 32 2e 35 00  5f 49 54 4d 5f 64 65 72  |C_2.2.5._ITM_der|
00000400  65 67 69 73 74 65 72 54  4d 43 6c 6f 6e 65 54 61  |egisterTMCloneTa|
00000410  62 6c 65 00 5f 5f 67 6d  6f 6e 5f 73 74 61 72 74  |ble.__gmon_start|
00000420  5f 5f 00 5f 49 54 4d 5f  72 65 67 69 73 74 65 72  |__._ITM_register|
00000430  54 4d 43 6c 6f 6e 65 54  61 62 6c 65 00 00 00 00  |TMCloneTable....|
00000440  00 00 02 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
00000450  01 00 01 00 01 00 00 00  10 00 00 00 00 00 00 00  |................|
00000460  75 1a 69 09 00 00 02 00  2c 00 00 00 00 00 00 00  |u.i.....,.......|
00000470  f0 3d 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |.=..............|
00000480  20 11 00 00 00 00 00 00  f8 3d 00 00 00 00 00 00  | ........=......|
00000490  08 00 00 00 00 00 00 00  e0 10 00 00 00 00 00 00  |................|
000004a0  08 40 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |.@..............|
000004b0  08 40 00 00 00 00 00 00  d8 3f 00 00 00 00 00 00  |.@.......?......|
000004c0  06 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00  |................|
000004d0  e0 3f 00 00 00 00 00 00  06 00 00 00 02 00 00 00  |.?..............|
000004e0  00 00 00 00 00 00 00 00  e8 3f 00 00 00 00 00 00  |.........?......|
000004f0  06 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
00000500  f0 3f 00 00 00 00 00 00  06 00 00 00 04 00 00 00  |.?..............|
00000510  00 00 00 00 00 00 00 00  f8 3f 00 00 00 00 00 00  |.........?......|
00000520  06 00 00 00 05 00 00 00  00 00 00 00 00 00 00 00  |................|
00000530  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00001000  f3 0f 1e fa 48 83 ec 08  48 8b 05 d9 2f 00 00 48  |....H...H.../..H|
00001010  85 c0 74 02 ff d0 48 83  c4 08 c3 00 00 00 00 00  |..t...H.........|
00001020  ff 35 a2 2f 00 00 ff 25  a4 2f 00 00 0f 1f 40 00  |.5./...%./....@.|
00001030  ff 25 c2 2f 00 00 66 90  00 00 00 00 00 00 00 00  |.%./..f.........|
00001040  f3 0f 1e fa 31 ed 49 89  d1 5e 48 89 e2 48 83 e4  |....1.I..^H..H..|
00001050  f0 50 54 4c 8d 05 96 01  00 00 48 8d 0d 1f 01 00  |.PTL......H.....|
00001060  00 48 8d 3d f0 00 00 00  ff 15 72 2f 00 00 f4 90  |.H.=......r/....|
00001070  48 8d 3d 99 2f 00 00 48  8d 05 92 2f 00 00 48 39  |H.=./..H.../..H9|
00001080  f8 74 15 48 8b 05 4e 2f  00 00 48 85 c0 74 09 ff  |.t.H..N/..H..t..|
00001090  e0 0f 1f 80 00 00 00 00  c3 0f 1f 80 00 00 00 00  |................|
000010a0  48 8d 3d 69 2f 00 00 48  8d 35 62 2f 00 00 48 29  |H.=i/..H.5b/..H)|
000010b0  fe 48 89 f0 48 c1 ee 3f  48 c1 f8 03 48 01 c6 48  |.H..H..?H...H..H|
000010c0  d1 fe 74 14 48 8b 05 25  2f 00 00 48 85 c0 74 08  |..t.H..%/..H..t.|
000010d0  ff e0 66 0f 1f 44 00 00  c3 0f 1f 80 00 00 00 00  |..f..D..........|
000010e0  f3 0f 1e fa 80 3d 25 2f  00 00 00 75 2b 55 48 83  |.....=%/...u+UH.|
000010f0  3d 02 2f 00 00 00 48 89  e5 74 0c 48 8b 3d 06 2f  |=./...H..t.H.=./|
00001100  00 00 e8 29 ff ff ff e8  64 ff ff ff c6 05 fd 2e  |...)....d.......|
00001110  00 00 01 5d c3 0f 1f 00  c3 0f 1f 80 00 00 00 00  |...]............|
00001120  f3 0f 1e fa e9 77 ff ff  ff 90 f3 0f 1e fa 55 48  |.....w........UH|
00001130  89 e5 48 89 7d f8 48 8b  45 f8 c7 00 64 00 00 00  |..H.}.H.E...d...|
00001140  90 5d c3 90 f3 0f 1e fa  55 48 89 e5 48 89 7d f8  |.]......UH..H.}.|
00001150  48 8b 45 f8 8b 00 5d c3  55 48 89 e5 48 83 ec 10  |H.E...].UH..H...|
00001160  48 8d 45 fc 48 89 c7 e8  be ff ff ff 48 8d 45 fc  |H.E.H.......H.E.|
00001170  48 89 c7 e8 cc ff ff ff  b8 00 00 00 00 c9 c3 90  |H...............|
00001180  f3 0f 1e fa 41 57 4c 8d  3d 63 2c 00 00 41 56 49  |....AWL.=c,..AVI|
00001190  89 d6 41 55 49 89 f5 41  54 41 89 fc 55 48 8d 2d  |..AUI..ATA..UH.-|
000011a0  54 2c 00 00 53 4c 29 fd  48 83 ec 08 e8 4f fe ff  |T,..SL).H....O..|
000011b0  ff 48 c1 fd 03 74 1f 31  db 0f 1f 80 00 00 00 00  |.H...t.1........|
000011c0  4c 89 f2 4c 89 ee 44 89  e7 41 ff 14 df 48 83 c3  |L..L..D..A...H..|
000011d0  01 48 39 dd 75 ea 48 83  c4 08 5b 5d 41 5c 41 5d  |.H9.u.H...[]A\A]|
000011e0  41 5e 41 5f c3 66 66 2e  0f 1f 84 00 00 00 00 00  |A^A_.ff.........|
000011f0  f3 0f 1e fa c3 00 00 00  f3 0f 1e fa 48 83 ec 08  |............H...|
00001200  48 83 c4 08 c3 00 00 00  00 00 00 00 00 00 00 00  |H...............|
00001210  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002000  01 00 02 00 01 1b 03 3b  48 00 00 00 08 00 00 00  |.......;H.......|
00002010  1c f0 ff ff 7c 00 00 00  2c f0 ff ff a4 00 00 00  |....|...,.......|
00002020  3c f0 ff ff 64 00 00 00  26 f1 ff ff bc 00 00 00  |<...d...&.......|
00002030  40 f1 ff ff dc 00 00 00  54 f1 ff ff fc 00 00 00  |@.......T.......|
00002040  7c f1 ff ff 1c 01 00 00  ec f1 ff ff 64 01 00 00  ||...........d...|
00002050  14 00 00 00 00 00 00 00  01 7a 52 00 01 78 10 01  |.........zR..x..|
00002060  1b 0c 07 08 90 01 00 00  14 00 00 00 1c 00 00 00  |................|
00002070  d0 ef ff ff 2f 00 00 00  00 44 07 10 00 00 00 00  |..../....D......|
00002080  24 00 00 00 34 00 00 00  98 ef ff ff 10 00 00 00  |$...4...........|
00002090  00 0e 10 46 0e 18 4a 0f  0b 77 08 80 00 3f 1a 3b  |...F..J..w...?.;|
000020a0  2a 33 24 22 00 00 00 00  14 00 00 00 5c 00 00 00  |*3$"........\...|
000020b0  80 ef ff ff 08 00 00 00  00 00 00 00 00 00 00 00  |................|
000020c0  1c 00 00 00 74 00 00 00  62 f0 ff ff 19 00 00 00  |....t...b.......|
000020d0  00 45 0e 10 86 02 43 0d  06 50 0c 07 08 00 00 00  |.E....C..P......|
000020e0  1c 00 00 00 94 00 00 00  5c f0 ff ff 14 00 00 00  |........\.......|
000020f0  00 45 0e 10 86 02 43 0d  06 4b 0c 07 08 00 00 00  |.E....C..K......|
00002100  1c 00 00 00 b4 00 00 00  50 f0 ff ff 27 00 00 00  |........P...'...|
00002110  00 41 0e 10 86 02 43 0d  06 62 0c 07 08 00 00 00  |.A....C..b......|
00002120  44 00 00 00 d4 00 00 00  58 f0 ff ff 65 00 00 00  |D.......X...e...|
00002130  00 46 0e 10 8f 02 49 0e  18 8e 03 45 0e 20 8d 04  |.F....I....E. ..|
00002140  45 0e 28 8c 05 44 0e 30  86 06 48 0e 38 83 07 47  |E.(..D.0..H.8..G|
00002150  0e 40 6e 0e 38 41 0e 30  41 0e 28 42 0e 20 42 0e  |.@n.8A.0A.(B. B.|
00002160  18 42 0e 10 42 0e 08 00  10 00 00 00 1c 01 00 00  |.B..B...........|
00002170  80 f0 ff ff 05 00 00 00  00 00 00 00 00 00 00 00  |................|
00002180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002df0  20 11 00 00 00 00 00 00  e0 10 00 00 00 00 00 00  | ...............|
00002e00  01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00002e10  0c 00 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00002e20  0d 00 00 00 00 00 00 00  f8 11 00 00 00 00 00 00  |................|
00002e30  19 00 00 00 00 00 00 00  f0 3d 00 00 00 00 00 00  |.........=......|
00002e40  1b 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00002e50  1a 00 00 00 00 00 00 00  f8 3d 00 00 00 00 00 00  |.........=......|
00002e60  1c 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00002e70  f5 fe ff 6f 00 00 00 00  08 03 00 00 00 00 00 00  |...o............|
00002e80  05 00 00 00 00 00 00 00  c0 03 00 00 00 00 00 00  |................|
00002e90  06 00 00 00 00 00 00 00  30 03 00 00 00 00 00 00  |........0.......|
00002ea0  0a 00 00 00 00 00 00 00  7d 00 00 00 00 00 00 00  |........}.......|
00002eb0  0b 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00002ec0  15 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00002ed0  03 00 00 00 00 00 00 00  c0 3f 00 00 00 00 00 00  |.........?......|
00002ee0  07 00 00 00 00 00 00 00  70 04 00 00 00 00 00 00  |........p.......|
00002ef0  08 00 00 00 00 00 00 00  c0 00 00 00 00 00 00 00  |................|
00002f00  09 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00002f10  1e 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00002f20  fb ff ff 6f 00 00 00 00  01 00 00 08 00 00 00 00  |...o............|
00002f30  fe ff ff 6f 00 00 00 00  50 04 00 00 00 00 00 00  |...o....P.......|
00002f40  ff ff ff 6f 00 00 00 00  01 00 00 00 00 00 00 00  |...o............|
00002f50  f0 ff ff 6f 00 00 00 00  3e 04 00 00 00 00 00 00  |...o....>.......|
00002f60  f9 ff ff 6f 00 00 00 00  03 00 00 00 00 00 00 00  |...o............|
00002f70  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00002fc0  00 3e 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.>..............|
00002fd0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00003000  00 00 00 00 00 00 00 00  08 40 00 00 00 00 00 00  |.........@......|
00003010  47 43 43 3a 20 28 55 62  75 6e 74 75 20 39 2e 33  |GCC: (Ubuntu 9.3|
00003020  2e 30 2d 31 37 75 62 75  6e 74 75 31 7e 32 30 2e  |.0-17ubuntu1~20.|
00003030  30 34 29 20 39 2e 33 2e  30 00 00 00 00 00 00 00  |04) 9.3.0.......|
00003040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003050  00 00 00 00 00 00 00 00  00 00 00 00 03 00 01 00  |................|
00003060  a8 02 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003070  00 00 00 00 03 00 02 00  c4 02 00 00 00 00 00 00  |................|
00003080  00 00 00 00 00 00 00 00  00 00 00 00 03 00 03 00  |................|
00003090  e8 02 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000030a0  00 00 00 00 03 00 04 00  08 03 00 00 00 00 00 00  |................|
000030b0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 05 00  |................|
000030c0  30 03 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |0...............|
000030d0  00 00 00 00 03 00 06 00  c0 03 00 00 00 00 00 00  |................|
000030e0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 07 00  |................|
000030f0  3e 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |>...............|
00003100  00 00 00 00 03 00 08 00  50 04 00 00 00 00 00 00  |........P.......|
00003110  00 00 00 00 00 00 00 00  00 00 00 00 03 00 09 00  |................|
00003120  70 04 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |p...............|
00003130  00 00 00 00 03 00 0a 00  00 10 00 00 00 00 00 00  |................|
00003140  00 00 00 00 00 00 00 00  00 00 00 00 03 00 0b 00  |................|
00003150  20 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  | ...............|
00003160  00 00 00 00 03 00 0c 00  30 10 00 00 00 00 00 00  |........0.......|
00003170  00 00 00 00 00 00 00 00  00 00 00 00 03 00 0d 00  |................|
00003180  40 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |@...............|
00003190  00 00 00 00 03 00 0e 00  f8 11 00 00 00 00 00 00  |................|
000031a0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 0f 00  |................|
000031b0  00 20 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |. ..............|
000031c0  00 00 00 00 03 00 10 00  04 20 00 00 00 00 00 00  |......... ......|
000031d0  00 00 00 00 00 00 00 00  00 00 00 00 03 00 11 00  |................|
000031e0  50 20 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |P ..............|
000031f0  00 00 00 00 03 00 12 00  f0 3d 00 00 00 00 00 00  |.........=......|
00003200  00 00 00 00 00 00 00 00  00 00 00 00 03 00 13 00  |................|
00003210  f8 3d 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.=..............|
00003220  00 00 00 00 03 00 14 00  00 3e 00 00 00 00 00 00  |.........>......|
00003230  00 00 00 00 00 00 00 00  00 00 00 00 03 00 15 00  |................|
00003240  c0 3f 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.?..............|
00003250  00 00 00 00 03 00 16 00  00 40 00 00 00 00 00 00  |.........@......|
00003260  00 00 00 00 00 00 00 00  00 00 00 00 03 00 17 00  |................|
00003270  10 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
00003280  00 00 00 00 03 00 18 00  00 00 00 00 00 00 00 00  |................|
00003290  00 00 00 00 00 00 00 00  01 00 00 00 04 00 f1 ff  |................|
000032a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000032b0  0c 00 00 00 02 00 0d 00  70 10 00 00 00 00 00 00  |........p.......|
000032c0  00 00 00 00 00 00 00 00  0e 00 00 00 02 00 0d 00  |................|
000032d0  a0 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000032e0  21 00 00 00 02 00 0d 00  e0 10 00 00 00 00 00 00  |!...............|
000032f0  00 00 00 00 00 00 00 00  37 00 00 00 01 00 17 00  |........7.......|
00003300  10 40 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |.@..............|
00003310  46 00 00 00 01 00 13 00  f8 3d 00 00 00 00 00 00  |F........=......|
00003320  00 00 00 00 00 00 00 00  6d 00 00 00 02 00 0d 00  |........m.......|
00003330  20 11 00 00 00 00 00 00  00 00 00 00 00 00 00 00  | ...............|
00003340  79 00 00 00 01 00 12 00  f0 3d 00 00 00 00 00 00  |y........=......|
00003350  00 00 00 00 00 00 00 00  98 00 00 00 04 00 f1 ff  |................|
00003360  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003370  a2 00 00 00 04 00 f1 ff  00 00 00 00 00 00 00 00  |................|
00003380  00 00 00 00 00 00 00 00  01 00 00 00 04 00 f1 ff  |................|
00003390  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000033a0  ab 00 00 00 01 00 11 00  7c 21 00 00 00 00 00 00  |........|!......|
000033b0  00 00 00 00 00 00 00 00  00 00 00 00 04 00 f1 ff  |................|
000033c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000033d0  b9 00 00 00 00 00 12 00  f8 3d 00 00 00 00 00 00  |.........=......|
000033e0  00 00 00 00 00 00 00 00  ca 00 00 00 01 00 14 00  |................|
000033f0  00 3e 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.>..............|
00003400  d3 00 00 00 00 00 12 00  f0 3d 00 00 00 00 00 00  |.........=......|
00003410  00 00 00 00 00 00 00 00  e6 00 00 00 00 00 10 00  |................|
00003420  04 20 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |. ..............|
00003430  f9 00 00 00 01 00 15 00  c0 3f 00 00 00 00 00 00  |.........?......|
00003440  00 00 00 00 00 00 00 00  b1 01 00 00 02 00 0a 00  |................|
00003450  00 10 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003460  0f 01 00 00 12 00 0d 00  f0 11 00 00 00 00 00 00  |................|
00003470  05 00 00 00 00 00 00 00  1f 01 00 00 20 00 00 00  |............ ...|
00003480  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003490  71 01 00 00 20 00 16 00  00 40 00 00 00 00 00 00  |q... ....@......|
000034a0  00 00 00 00 00 00 00 00  3b 01 00 00 10 00 16 00  |........;.......|
000034b0  10 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000034c0  19 01 00 00 12 02 0e 00  f8 11 00 00 00 00 00 00  |................|
000034d0  00 00 00 00 00 00 00 00  42 01 00 00 12 00 0d 00  |........B.......|
000034e0  2a 11 00 00 00 00 00 00  19 00 00 00 00 00 00 00  |*...............|
000034f0  50 01 00 00 12 00 00 00  00 00 00 00 00 00 00 00  |P...............|
00003500  00 00 00 00 00 00 00 00  6f 01 00 00 10 00 16 00  |........o.......|
00003510  00 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
00003520  7c 01 00 00 20 00 00 00  00 00 00 00 00 00 00 00  ||... ...........|
00003530  00 00 00 00 00 00 00 00  8b 01 00 00 11 02 16 00  |................|
00003540  08 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
00003550  98 01 00 00 11 00 0f 00  00 20 00 00 00 00 00 00  |......... ......|
00003560  04 00 00 00 00 00 00 00  a7 01 00 00 12 00 0d 00  |................|
00003570  80 11 00 00 00 00 00 00  65 00 00 00 00 00 00 00  |........e.......|
00003580  b7 01 00 00 12 00 0d 00  44 11 00 00 00 00 00 00  |........D.......|
00003590  14 00 00 00 00 00 00 00  c5 00 00 00 10 00 17 00  |................|
000035a0  18 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000035b0  75 01 00 00 12 00 0d 00  40 10 00 00 00 00 00 00  |u.......@.......|
000035c0  2f 00 00 00 00 00 00 00  cb 01 00 00 10 00 17 00  |/...............|
000035d0  10 40 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.@..............|
000035e0  d7 01 00 00 12 00 0d 00  2a 11 00 00 00 00 00 00  |........*.......|
000035f0  19 00 00 00 00 00 00 00  e5 01 00 00 12 00 0d 00  |................|
00003600  58 11 00 00 00 00 00 00  27 00 00 00 00 00 00 00  |X.......'.......|
00003610  ea 01 00 00 11 02 16 00  10 40 00 00 00 00 00 00  |.........@......|
00003620  00 00 00 00 00 00 00 00  f6 01 00 00 20 00 00 00  |............ ...|
00003630  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003640  10 02 00 00 22 00 00 00  00 00 00 00 00 00 00 00  |...."...........|
00003650  00 00 00 00 00 00 00 00  00 63 72 74 73 74 75 66  |.........crtstuf|
00003660  66 2e 63 00 64 65 72 65  67 69 73 74 65 72 5f 74  |f.c.deregister_t|
00003670  6d 5f 63 6c 6f 6e 65 73  00 5f 5f 64 6f 5f 67 6c  |m_clones.__do_gl|
00003680  6f 62 61 6c 5f 64 74 6f  72 73 5f 61 75 78 00 63  |obal_dtors_aux.c|
00003690  6f 6d 70 6c 65 74 65 64  2e 38 30 36 30 00 5f 5f  |ompleted.8060.__|
000036a0  64 6f 5f 67 6c 6f 62 61  6c 5f 64 74 6f 72 73 5f  |do_global_dtors_|
000036b0  61 75 78 5f 66 69 6e 69  5f 61 72 72 61 79 5f 65  |aux_fini_array_e|
000036c0  6e 74 72 79 00 66 72 61  6d 65 5f 64 75 6d 6d 79  |ntry.frame_dummy|
000036d0  00 5f 5f 66 72 61 6d 65  5f 64 75 6d 6d 79 5f 69  |.__frame_dummy_i|
000036e0  6e 69 74 5f 61 72 72 61  79 5f 65 6e 74 72 79 00  |nit_array_entry.|
000036f0  54 65 73 74 31 2e 63 70  70 00 6d 61 69 6e 2e 63  |Test1.cpp.main.c|
00003700  70 70 00 5f 5f 46 52 41  4d 45 5f 45 4e 44 5f 5f  |pp.__FRAME_END__|
00003710  00 5f 5f 69 6e 69 74 5f  61 72 72 61 79 5f 65 6e  |.__init_array_en|
00003720  64 00 5f 44 59 4e 41 4d  49 43 00 5f 5f 69 6e 69  |d._DYNAMIC.__ini|
00003730  74 5f 61 72 72 61 79 5f  73 74 61 72 74 00 5f 5f  |t_array_start.__|
00003740  47 4e 55 5f 45 48 5f 46  52 41 4d 45 5f 48 44 52  |GNU_EH_FRAME_HDR|
00003750  00 5f 47 4c 4f 42 41 4c  5f 4f 46 46 53 45 54 5f  |._GLOBAL_OFFSET_|
00003760  54 41 42 4c 45 5f 00 5f  5f 6c 69 62 63 5f 63 73  |TABLE_.__libc_cs|
00003770  75 5f 66 69 6e 69 00 5f  49 54 4d 5f 64 65 72 65  |u_fini._ITM_dere|
00003780  67 69 73 74 65 72 54 4d  43 6c 6f 6e 65 54 61 62  |gisterTMCloneTab|
00003790  6c 65 00 5f 65 64 61 74  61 00 5f 5a 4e 35 54 65  |le._edata._ZN5Te|
000037a0  73 74 31 43 32 45 76 00  5f 5f 6c 69 62 63 5f 73  |st1C2Ev.__libc_s|
000037b0  74 61 72 74 5f 6d 61 69  6e 40 40 47 4c 49 42 43  |tart_main@@GLIBC|
000037c0  5f 32 2e 32 2e 35 00 5f  5f 64 61 74 61 5f 73 74  |_2.2.5.__data_st|
000037d0  61 72 74 00 5f 5f 67 6d  6f 6e 5f 73 74 61 72 74  |art.__gmon_start|
000037e0  5f 5f 00 5f 5f 64 73 6f  5f 68 61 6e 64 6c 65 00  |__.__dso_handle.|
000037f0  5f 49 4f 5f 73 74 64 69  6e 5f 75 73 65 64 00 5f  |_IO_stdin_used._|
00003800  5f 6c 69 62 63 5f 63 73  75 5f 69 6e 69 74 00 5f  |_libc_csu_init._|
00003810  5a 4e 4b 35 54 65 73 74  31 36 67 65 74 56 61 72  |ZNK5Test16getVar|
00003820  45 76 00 5f 5f 62 73 73  5f 73 74 61 72 74 00 5f  |Ev.__bss_start._|
00003830  5a 4e 35 54 65 73 74 31  43 31 45 76 00 6d 61 69  |ZN5Test1C1Ev.mai|
00003840  6e 00 5f 5f 54 4d 43 5f  45 4e 44 5f 5f 00 5f 49  |n.__TMC_END__._I|
00003850  54 4d 5f 72 65 67 69 73  74 65 72 54 4d 43 6c 6f  |TM_registerTMClo|
00003860  6e 65 54 61 62 6c 65 00  5f 5f 63 78 61 5f 66 69  |neTable.__cxa_fi|
00003870  6e 61 6c 69 7a 65 40 40  47 4c 49 42 43 5f 32 2e  |nalize@@GLIBC_2.|
00003880  32 2e 35 00 00 2e 73 79  6d 74 61 62 00 2e 73 74  |2.5...symtab..st|
00003890  72 74 61 62 00 2e 73 68  73 74 72 74 61 62 00 2e  |rtab..shstrtab..|
000038a0  69 6e 74 65 72 70 00 2e  6e 6f 74 65 2e 67 6e 75  |interp..note.gnu|
000038b0  2e 62 75 69 6c 64 2d 69  64 00 2e 6e 6f 74 65 2e  |.build-id..note.|
000038c0  41 42 49 2d 74 61 67 00  2e 67 6e 75 2e 68 61 73  |ABI-tag..gnu.has|
000038d0  68 00 2e 64 79 6e 73 79  6d 00 2e 64 79 6e 73 74  |h..dynsym..dynst|
000038e0  72 00 2e 67 6e 75 2e 76  65 72 73 69 6f 6e 00 2e  |r..gnu.version..|
000038f0  67 6e 75 2e 76 65 72 73  69 6f 6e 5f 72 00 2e 72  |gnu.version_r..r|
00003900  65 6c 61 2e 64 79 6e 00  2e 69 6e 69 74 00 2e 70  |ela.dyn..init..p|
00003910  6c 74 00 2e 70 6c 74 2e  67 6f 74 00 2e 74 65 78  |lt..plt.got..tex|
00003920  74 00 2e 66 69 6e 69 00  2e 72 6f 64 61 74 61 00  |t..fini..rodata.|
00003930  2e 65 68 5f 66 72 61 6d  65 5f 68 64 72 00 2e 65  |.eh_frame_hdr..e|
00003940  68 5f 66 72 61 6d 65 00  2e 69 6e 69 74 5f 61 72  |h_frame..init_ar|
00003950  72 61 79 00 2e 66 69 6e  69 5f 61 72 72 61 79 00  |ray..fini_array.|
00003960  2e 64 79 6e 61 6d 69 63  00 2e 64 61 74 61 00 2e  |.dynamic..data..|
00003970  62 73 73 00 2e 63 6f 6d  6d 65 6e 74 00 00 00 00  |bss..comment....|
00003980  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000039c0  1b 00 00 00 01 00 00 00  02 00 00 00 00 00 00 00  |................|
000039d0  a8 02 00 00 00 00 00 00  a8 02 00 00 00 00 00 00  |................|
000039e0  1c 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000039f0  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003a00  23 00 00 00 07 00 00 00  02 00 00 00 00 00 00 00  |#...............|
00003a10  c4 02 00 00 00 00 00 00  c4 02 00 00 00 00 00 00  |................|
00003a20  24 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |$...............|
00003a30  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003a40  36 00 00 00 07 00 00 00  02 00 00 00 00 00 00 00  |6...............|
00003a50  e8 02 00 00 00 00 00 00  e8 02 00 00 00 00 00 00  |................|
00003a60  20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  | ...............|
00003a70  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003a80  44 00 00 00 f6 ff ff 6f  02 00 00 00 00 00 00 00  |D......o........|
00003a90  08 03 00 00 00 00 00 00  08 03 00 00 00 00 00 00  |................|
00003aa0  24 00 00 00 00 00 00 00  05 00 00 00 00 00 00 00  |$...............|
00003ab0  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003ac0  4e 00 00 00 0b 00 00 00  02 00 00 00 00 00 00 00  |N...............|
00003ad0  30 03 00 00 00 00 00 00  30 03 00 00 00 00 00 00  |0.......0.......|
00003ae0  90 00 00 00 00 00 00 00  06 00 00 00 01 00 00 00  |................|
00003af0  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00003b00  56 00 00 00 03 00 00 00  02 00 00 00 00 00 00 00  |V...............|
00003b10  c0 03 00 00 00 00 00 00  c0 03 00 00 00 00 00 00  |................|
00003b20  7d 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |}...............|
00003b30  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003b40  5e 00 00 00 ff ff ff 6f  02 00 00 00 00 00 00 00  |^......o........|
00003b50  3e 04 00 00 00 00 00 00  3e 04 00 00 00 00 00 00  |>.......>.......|
00003b60  0c 00 00 00 00 00 00 00  05 00 00 00 00 00 00 00  |................|
00003b70  02 00 00 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
00003b80  6b 00 00 00 fe ff ff 6f  02 00 00 00 00 00 00 00  |k......o........|
00003b90  50 04 00 00 00 00 00 00  50 04 00 00 00 00 00 00  |P.......P.......|
00003ba0  20 00 00 00 00 00 00 00  06 00 00 00 01 00 00 00  | ...............|
00003bb0  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003bc0  7a 00 00 00 04 00 00 00  02 00 00 00 00 00 00 00  |z...............|
00003bd0  70 04 00 00 00 00 00 00  70 04 00 00 00 00 00 00  |p.......p.......|
00003be0  c0 00 00 00 00 00 00 00  05 00 00 00 00 00 00 00  |................|
00003bf0  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00003c00  84 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  |................|
00003c10  00 10 00 00 00 00 00 00  00 10 00 00 00 00 00 00  |................|
00003c20  1b 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003c30  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003c40  8a 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  |................|
00003c50  20 10 00 00 00 00 00 00  20 10 00 00 00 00 00 00  | ....... .......|
00003c60  10 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003c70  10 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00003c80  8f 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  |................|
00003c90  30 10 00 00 00 00 00 00  30 10 00 00 00 00 00 00  |0.......0.......|
00003ca0  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003cb0  08 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003cc0  98 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  |................|
00003cd0  40 10 00 00 00 00 00 00  40 10 00 00 00 00 00 00  |@.......@.......|
00003ce0  b5 01 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003cf0  10 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003d00  9e 00 00 00 01 00 00 00  06 00 00 00 00 00 00 00  |................|
00003d10  f8 11 00 00 00 00 00 00  f8 11 00 00 00 00 00 00  |................|
00003d20  0d 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003d30  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003d40  a4 00 00 00 01 00 00 00  12 00 00 00 00 00 00 00  |................|
00003d50  00 20 00 00 00 00 00 00  00 20 00 00 00 00 00 00  |. ....... ......|
00003d60  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003d70  04 00 00 00 00 00 00 00  04 00 00 00 00 00 00 00  |................|
00003d80  ac 00 00 00 01 00 00 00  02 00 00 00 00 00 00 00  |................|
00003d90  04 20 00 00 00 00 00 00  04 20 00 00 00 00 00 00  |. ....... ......|
00003da0  4c 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |L...............|
00003db0  04 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003dc0  ba 00 00 00 01 00 00 00  02 00 00 00 00 00 00 00  |................|
00003dd0  50 20 00 00 00 00 00 00  50 20 00 00 00 00 00 00  |P ......P ......|
00003de0  30 01 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |0...............|
00003df0  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003e00  c4 00 00 00 0e 00 00 00  03 00 00 00 00 00 00 00  |................|
00003e10  f0 3d 00 00 00 00 00 00  f0 2d 00 00 00 00 00 00  |.=.......-......|
00003e20  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003e30  08 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003e40  d0 00 00 00 0f 00 00 00  03 00 00 00 00 00 00 00  |................|
00003e50  f8 3d 00 00 00 00 00 00  f8 2d 00 00 00 00 00 00  |.=.......-......|
00003e60  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003e70  08 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003e80  dc 00 00 00 06 00 00 00  03 00 00 00 00 00 00 00  |................|
00003e90  00 3e 00 00 00 00 00 00  00 2e 00 00 00 00 00 00  |.>..............|
00003ea0  c0 01 00 00 00 00 00 00  06 00 00 00 00 00 00 00  |................|
00003eb0  08 00 00 00 00 00 00 00  10 00 00 00 00 00 00 00  |................|
00003ec0  93 00 00 00 01 00 00 00  03 00 00 00 00 00 00 00  |................|
00003ed0  c0 3f 00 00 00 00 00 00  c0 2f 00 00 00 00 00 00  |.?......./......|
00003ee0  40 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |@...............|
00003ef0  08 00 00 00 00 00 00 00  08 00 00 00 00 00 00 00  |................|
00003f00  e5 00 00 00 01 00 00 00  03 00 00 00 00 00 00 00  |................|
00003f10  00 40 00 00 00 00 00 00  00 30 00 00 00 00 00 00  |.@.......0......|
00003f20  10 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003f30  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003f40  eb 00 00 00 08 00 00 00  03 00 00 00 00 00 00 00  |................|
00003f50  10 40 00 00 00 00 00 00  10 30 00 00 00 00 00 00  |.@.......0......|
00003f60  08 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003f70  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00003f80  f0 00 00 00 01 00 00 00  30 00 00 00 00 00 00 00  |........0.......|
00003f90  00 00 00 00 00 00 00 00  10 30 00 00 00 00 00 00  |.........0......|
00003fa0  2a 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |*...............|
00003fb0  01 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00003fc0  01 00 00 00 02 00 00 00  00 00 00 00 00 00 00 00  |................|
00003fd0  00 00 00 00 00 00 00 00  40 30 00 00 00 00 00 00  |........@0......|
00003fe0  18 06 00 00 00 00 00 00  1a 00 00 00 2c 00 00 00  |............,...|
00003ff0  08 00 00 00 00 00 00 00  18 00 00 00 00 00 00 00  |................|
00004000  09 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
00004010  00 00 00 00 00 00 00 00  58 36 00 00 00 00 00 00  |........X6......|
00004020  2c 02 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |,...............|
00004030  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00004040  11 00 00 00 03 00 00 00  00 00 00 00 00 00 00 00  |................|
00004050  00 00 00 00 00 00 00 00  84 38 00 00 00 00 00 00  |.........8......|
00004060  f9 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00004070  01 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00004080

二、参考文献

《程序员的自我修养——编译、装载与库》俞甲子 石凡 潘爱民 著, 电子工业出版社,  page:37-58

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C/C++程序编译成可执行程序步骤图文源码详解 的相关文章

  • 3维空间中点、线、面之间的数学关系(python代码)

    1 面的定义 三维空间中的平面由两个量确定 xff1a 一个法向量 xff08 垂直于该平面的向量 xff09 一个已知点 xff08 位于该平面上的一个点 2 叉乘和点乘的区别 2 1叉乘的计算方式 xff0c 叉乘用来得到垂直于两条向量
  • 三维空间中,向量在另外一个向量或者面上的投影

    1 向量在另外一个向量上的投影 求向量u在向量v上的投影 定义为u xff0c 为两向量的夹角 一个向量有两个属性 xff0c 大小和方向首先明确向量点乘的含义 u v
  • C++编程02(引用、参数传递、内联函数)

    C 43 43 编程02 xff08 引用 参数传递方式 内联函数 xff09 引用 文章目录 C 43 43 编程02 xff08 引用 参数传递方式 内联函数 xff09 一 引用1 引用的实质2 引用必须初始化3 对数组建立引用 二
  • 使用Git bash查看之前版本和恢复最新版本的方法

    项目场景 xff1a 作为实习生 xff0c 一直在帮公司搞C 43 43 的图像识别项目 xff0c 因为总是改需求 xff0c 所以我的代码注释的一大片 xff0c 不便于整理 xff0c 有时候改的改的 xff0c 就找不到之前的版本
  • Windows平台下CMake使用报错No CMAKE_CXX_COMPILER could be found

    今天在笔记本建立了一个Cmakelists xff0c 使用cmake编译的时候 xff0c 报错 No CMAKE CXX COMPILER could be found No CMAKE C COMPILER could be foun
  • Cartographer编译方法及编译出错(glog库链接错误)解决方法

    最近在重新调试Carto代码 xff0c 想把自己的代码加入到Carto中 xff0c 原本想在IDE中调试 xff0c 然而Carto编译方式比较奇葩 xff08 catkin make isolated install use ninj
  • 什么是RTOS?RTOS与普通操作系统的区别

    一 xff1a 什么是RTOS RTOS Real Time Operating System xff0c 实时操作系统 实时性是其最大特征 xff0c 实时操作系统中都要包含一个实时任务调度器 xff0c 这个任务调度器与其它操作系统的最
  • 进度条(CSS)

    效果 xff08 实际有动态效果 xff09 html span class token tag span class token tag span class token punctuation lt span div span span
  • 终端命令行打开vscode

    在指定文件夹内 xff0c 使用终端命令行打开vscode 在当前目录打开vscode code 如果code命令无法使用 xff0c 需要配路径 xff0c 如下 xff1a 打开bash或者zsh配置文件 bash 用户请使用 vi b
  • 串口缓冲区管理分析

    一 概述 xff1a 串口使用时一般包含两个缓冲区 xff0c 即发送缓冲区和接收缓冲区 发送数据时 xff0c 先将数据存在发送缓冲区 xff0c 然后通过串口发送 xff1b 接收数据时 xff0c 先将接收的数据存在接收缓冲区 xff
  • array element has incomplete type

    http stackoverflow com search q 61 luaL reg 43 incomplete 43 type libs edje lua2 o edje lua2 c 183 error array type has
  • rt-thread学习记录(一)--内核的移植

    rt thread学习记录 xff08 一 xff09 内核的移植 1 基本选择 在rt thread官网上 xff0c 看到其对stm32芯片的支持 xff0c 因此选择stm32c8t6最小系统来进行移植内核 xff0c rt thre
  • rt-thread内核启动分析

    1 项目准备 上一节的基本环境 如rh thread 基本环境的搭建 硬件材料stm32f103C8T6 以及st link rt thread 内核启动官网分析 在分析rt thread代码的时候 由于rt thread的代码是十分优秀的
  • 达梦数据库sql语句记录

    登入 在ubuntu上安装好达梦数据 xff0c 并且生成实例 xff0c 在ubuntu上进行安装目录 xff0c 采用在tools目录下 xff0c 使用 disql进行命令行模式 xff0c 连接服务器 xff1a Conn sysd
  • vertx web开发(一)

    vertx web开发 最近在开发中 xff0c 由于spring 的大而全 xff0c 反而不实用于一下小项目 xff0c 因为spring boot在空载的情况 xff0c 至少其内存占用超过150M 而对于一些简单的项目反到不适用 而
  • kotlin协程实现原理

    传统runnable接口实现 在java中 xff0c 很多耗时的行为通过实现runnable接口 xff0c 并且通过线程运行下这些耗时的任务 xff0c 例如 xff1a span class token keyword public
  • PCL---RANSAC随机采样一致性算法

    前言 通过前面的文章 xff0c 我们基本上代建的相关环境 本文将继续基于此继续学习PCL相关采样一致性算法 基础代码下载 1 准备 1 1 Ransac算法介绍 RANSAC从样本中随机抽选出一个样本子集 xff0c 使用最小方差估计算法
  • PCL-使用potree可视化

    前言 在几篇文章中 xff0c 基本实现了对PCL相关操作 xff0c 最近在github上找到了Web端对点云数据可视化兼容很好的项目 Potree 对此本文将介绍如何使用Potree来进行web端的可视化 1 Potree 官方运行 P
  • PCL- Las文件处理

    前言 在对点云数据处理的时候 xff0c 很多时候激光雷达扫描的文件不一定是 pcd文件 xff0c 这个时候需要进行相关文件处理 xff0c 如Las xff0c laz e57等文件格式 xff0c 本文将介绍las文件的读写 1 引入
  • PCL-Window下安装

    1 安装编译工具链MSVC MSVC工具链是visual studio 自带的工具链 xff0c 因此安装visual studio社区版即安装完成相应的MSVC工具链 2 安装Clion 相比与Visual studio的界面来说 xff

随机推荐

  • STM32 串口详细讲解

    什么是串口 UART Universal Asynchronous Receiver Transmitter 通用异步收发器 USART Universal Synchronous Asynchronous Receiver Transmi
  • ubuntu 修改pip指定路径

    参考这篇文章 还有 这篇文章 第二篇更好一点 xff0c 亲测成功
  • CrowdHuman数据集介绍

    CrowdHuman数据集是旷世发布的用于行人检测的数据集 xff0c 图片数据大多来自于google搜索 CrowdHuman 数据集数据量比较大 xff0c 训练集15000张 xff0c 测试集5000张 xff0c 验证集4370张
  • CityPersons数据集介绍

    CityPersons数据集是cityscape的一个子集 xff0c 它只包含个人注释 有2975张图片用于培训 xff0c 500张和1575张图片用于验证和测试 一幅图像中行人的平均数量为7人 xff0c 提供了可视区域和全身标注 C
  • CUHK-SYSU数据集介绍

    该数据集是一个大规模的人员搜索基准 xff0c 包含18184张图像和8432个身份 根据图像来源 xff0c 数据集可以分为两部分 xff1a 街道捕捉和电影 xff1a 在街拍中 xff0c 图像通过手持摄像机收集 xff0c 跨越数百
  • ETHZ数据集介绍

    Ess等构建了基于双目视觉的行人数据库用于多人的行人检测与跟踪研究 该数据库采用一对车载的AVT Marlins F033C摄像头进行拍摄 xff0c 分辨率为640 480 xff0c 帧率13 14fps xff0c 给出标定信息和行人
  • Swin Transformer V2

    Swin Transformer V2 论文链接 xff1a https arxiv org pdf 2111 09833 pdf 代码链接 xff1a https github com microsoft Swin Transformer
  • Jetson_Xavier_NX使用教程1(刷机)

    刷机教程 一 xff1a 准备 1 xff1a 准备需要一个tf卡 xff0c 容量最好大点 xff0c 我买的128G的 2 xff1a 还有两个软件一个是格式化卡的软件 xff0c 一个是将镜像文件写入的卡的软件 格式化卡的软件 写入镜
  • Jetson_Xavier_NX使用教程2(简单实用)

    本文会介绍一些刷机后的基本操作 1 风扇控制 刚开始插入电源风扇不转我以外坏了 xff0c 后来才发现并没有 Xavier NX的风扇在系统内核中有一套自动控制温度和转速的算法 xff0c 经过我观察大约在40度左右的时候会自动开启风扇进行
  • NVIDIA Jetson NX使用教程3配置pytorch环境

    本节主要记录 xff0c 安装pytorch及torch vision 1 下载Pytorch 因为jetson属于arm架构的机器 xff0c 所以需要去nvidia的官网下载对应的安装包而不是pytroch的官网 官网链接 xff0c
  • Java 基于 IETF RFC 2617 身份认证

    IETF RFC 2617 身份认证 是基于 HTTP 协议进行验证的 xff0c 认证过程中需要发送两次 HTTP 请求 xff0c 第一次请求服务器返回 401 和 认证标识 xff08 nonce xff09 xff0c 第二次访问H
  • 判断一台机器是大端序还是小端序

    在几乎所有的机器上 xff0c 多字节对象都被存储为连续的字节序列 例如在C语言中 xff0c 一个类型为int的变量x地址为0x100 xff0c 那么其对应地址表达式 amp x的值为0x100 且x的四个字节将被存储在存储器的0x10
  • STL容器保存智能指针并将this指针通过emplace传入STL容器所造成的致命问题(【double free or corruption (out)】和【bad_weak_ptr】)

    我用std queue保存了一个Message类型的智能指针 queue lt shared ptr lt MessageA gt xff0c 然后在Message类型中来将this指针插入队列 xff0c 使用std queue push
  • 实时动态定位(RTK)

    内容来着网络 实时动态定位 xff1a Real Time Kinematic RTK技术的关键在于使用了GPS的载波相位观测量 xff0c 并利用了参考站和移动站之间观测误差的空间相关性 xff0c 通过差分的方式除去移动站观测数据中的大
  • 几个实用的 Bat 脚本命令

    文章目录 1 截图2 息屏后锁屏3 查看当前的路径4 倒计时5 密码输入6 比较两个文本的差异 1 截图 start snippingtool 2 息屏后锁屏 powershell Add Type 39 DllImport 34 user
  • 学习cmake的使用和CMakeLists.txt

    1 学习cmake的使用和CMakeLists txt 文章目录 1 学习cmake的使用和CMakeLists txt1 1 cmake外部构建基础1 2 让每个源文件目录都包含一个CMakeLists txt1 3 安装 1 4 构建静
  • ROS系统基础知识梳理(四) 串口通信

    ROS系统基础知识梳理 四 串口通信 学习ROS系统 xff0c 初步接触到ROS系统外接传感器 xff0c 传感器通过Uart通信向台式机发送数据 xff0c 内容涉及到ROS调用串口数据 串口数据校验 以及欧拉角转换四元数 任务系统 x
  • Keil5中添加新的.c和.h文件

    目录 在Project的文件夹中添加添加路径使用include 在Project的文件夹中添加 如图1所示 xff0c 在User的文件夹上右键 xff0c 添加已有文件 图1 添加路径 然后需要在options for Target xf
  • 学习c语言的总结

    学习时间 xff1a 早上9点 晚上9点 学习内容 xff1a 利用c语言对 的代码学习 xff0c 并根据自己的理解编写代码 xff0c 最后整合学习的代码和自己理解的代码 xff0c 编写出更优的代码 学习体会 xff1a 对一个问题举
  • C/C++程序编译成可执行程序步骤图文源码详解

    一个C 43 43 程序被编译为目标程序的过程中经历了四个部分 xff0c 分别是预处理 编译 汇编 链接 下面将通过一个简单的C 43 43 代码分别执行预处理 编译 汇编 链接四个步骤后的结果和基本原理讲解 注意 xff1a 博主是在u