网站建设技术论文,中信云 做网站,wordpress 首页关键词,甘肃省住房与城乡建设厅网站首页文章目录 GCCGCC简介GCC的命令格式gcc -Egcc -cgcc -Sgcc -ggcc -vGCC的主要执行步骤GCC涉及的文件类型针对多个源文件的处理 ELFELF介绍ELF文件格式ELF文件处理相关工具#xff1a;Binutils#xff08;binary utility#xff09;readlelf -hreadelf -S或readelf -SW#x… 文章目录 GCCGCC简介GCC的命令格式gcc -Egcc -cgcc -Sgcc -ggcc -vGCC的主要执行步骤GCC涉及的文件类型针对多个源文件的处理 ELFELF介绍ELF文件格式ELF文件处理相关工具Binutilsbinary utilityreadlelf -hreadelf -S或readelf -SW加W显示变宽objdump -S GCC
GCC简介 GCC的命令格式
预处理 把#define #include 这些#开头的宏语言转为标准的C语言 编译C语言变成机器指令 链接把编译后的指令文件与其他库链接到一块 调试需要加入调试信息
建议实战一下观察区别 如该程序
gcc -E
当预处理该文件时并且将输出结果输出到E文件 打开E文件 可以看到代码非常多但最后的main函数没有变化。上面的代码就是#includestdio.h转换为C语言的结果
gcc -c
生成的可执行文件但还没有链接
gcc -S 打开S文件查看为汇编语言
gcc -g gcc -v
可以看到一大串相关信息
GCC的主要执行步骤 Linux mv英文全拼move file命令用来为文件或目录改名、或将文件或目录移入其它位置。 cc1预处理和编译 as生成O文件 机器指令 collect中有ld 链接 将各种标准库和O文件链接在一起
GCC涉及的文件类型
小写s不包含#开头的代码 大写S还包含#开头的代码 可执行文件默认为a.out
针对多个源文件的处理 ELF
ELF介绍
可重定位文件链接才能把位置定下来 核心转储文件程序崩溃时相关信息
ELF文件格式
二进制 ELF Header: ELF文件的基本信息 如运行在哪种体系架构 版本号 .text: 程序的指令 .init程序初始化的指令 4K字节对齐 Programe Header Table运行时用到将哪些节放到一起合成段段放哪里 Section Header Table节的一些信息定位之类的
ELF文件处理相关工具Binutilsbinary utility
artar生成静态库要用到 readlelf -h
查看文件头 ELF-header Magic魔术 没啥大用就是给ELF做一个特殊的标志和别的东西区分开来 Class文件类型 64位还是32位
readelf -S或readelf -SW加W显示变宽
查看Section Header Table PROGBITS:可执行执行的意思 RELA可重定位的
objdump -S
-S是将汇编显示源代码部分
此时反汇编结果中没有源码部分显示 当编译时加上-g后 生成调试信息再反汇编发现源码和汇编指令