程序的加载链接和库-目标文件


从操作系统角度看  hello world程序的编译,加载,链接过程

编译过程   预编译cpp,编译cc1 生成.s文件, 汇编as 生成 .o文件,链接 ld 生成可执行文件

目标文件结构








 

一些相关的命令

名称 含义
ar 创建静态库,插入删除列出和提取成员
ldd 列出一个可执行文件在运行时所需要的共享库
gcc 强大的编译工具
nm 列出一个目标文件的符号表中定义的符号
size 列出目标文件中section的名字和大小
objdump

所有二进制工具之母

能够显示一个目标文件中所有的信息

最大的作用是反汇编.text 片段中的二进制指令

readelf

显示一个目标文件的完整结构

包括ELF头中编码的所有信息,包含size和nm的功能

strace 跟踪调试工具
strip 删除多余的段

 

 

 

 

 

参考

关于Linux静态库和动态库的分析

程序的编译链接过程

程序运行流程——链接、装载及执行


 

一些相关的命令

名称 含义
ar 创建静态库,插入删除列出和提取成员
ldd 列出一个可执行文件在运行时所需要的共享库
gcc 强大的编译工具
nm 列出一个目标文件的符号表中定义的符号
size 列出目标文件中section的名字和大小
objdump

所有二进制工具之母

能够显示一个目标文件中所有的信息

最大的作用是反汇编.text 片段中的二进制指令

readelf

显示一个目标文件的完整结构

包括ELF头中编码的所有信息,包含size和nm的功能

strace 跟踪调试工具
strip 删除多余的段

 

 

 

 

 

参考

关于Linux静态库和动态库的分析

程序的编译链接过程

程序运行流程——链接、装载及执行

猜你喜欢

转载自blog.csdn.net/hixiaoxiaoniao/article/details/80861317