潘恒 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验内容 1.预处理.编译和链接 实践 ELF头部在文件的开始,描述文件的总体格式,保存了路线图,描述该文件的组织情况,即生成该文件系统的字的大小和字节顺序 段头部表用来描述ELF可执行文件与连续的存储段之间的映射关系.节头表包含了描述文件节区的信息,每个节区在表中都有一个项,给出节区的名称.节区大小这类心里.用于链接的目标文件(…
“平安的祝福 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 理解编译链接的过程和ELF可执行文件格式…
可执行程序的装载 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 ①编译器预处理 gcc -E -o XX.cpp XX.c (-m32)// 注:把include的文件包含进来,并且完成宏的替换 ②汇编器编译成汇编代码 gcc -x cpp-output -S -o hello.s hello.cpp (-m32) ③汇编代码编译成二进制目标文件 gcc -x assembler -c hello.s -o hello.o (-m32) 注:不可读,含有部分机器代码但不可执…
Linux内核设计第七周 ——可执行程序的装载 第一部分 知识点总结 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 编译链接的过程 预处理阶段 gcc -E -o XX.cpp XX.c -m32 XX.cpp是预处理文件 编译器生成汇编代码阶段 gcc -x cpp-output -S -o hello.s hello.cpp -m32 XX.s是汇编代码 汇编器生成目标代码阶段 gcc -x assembler -c hello.s -o hello.o -m32 XX…
张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux内核分析 第七周 可执行程序的装载 一.预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 可执行文件的创建——预处理.编译和链接 shiyanlou:~/ $ cd Code [::] shiyanlou:Code/ $ vi hello.c [::] shiyanlou:Code/ $ gcc -E -o…
作业七:Linux内核如何装载和启动一个可执行程序 一.编译链接的过程和ELF可执行文件格式 可执行文件的创建——预处理.编译和链接 在object文件中有三种主要的类型. 一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件. 一个可执行(executable)文件保存着一个用来执行的程序:该文件指出了exec(BA_OS)如何来创建程序进程映象. 一个共享object文件保存着代码和合适的数据,用来被下面的两…
原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linux内核如何装载和启动一个可执行程序 可以结合实验截图.ELF可执行文件格式.用户态的相关代码等 博客内容中需要仔细分析新可执行程序的执行起点及对应的堆栈状态等 总结部分需要阐明自己对“Linux内核装载和启动一个可执行程序”的理解 实验报告: 理解编译链接的过程和ELF可执行文件格式: C代码——预处理——汇…
Linux内核分析第七周学习笔记--Linux内核如何装载和启动一个可执行程序 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 由源代码生成可执行文件 预处理 => 编译 => 汇编 => 链接 gcc -E hello.c -o hello.i gcc –S hello.i –o hello.s gcc –c hello.s –o hello.o gcc…
一.编译链接的过程和ELF可执行文件格式 vi hello.c gcc -E -o hello.cpp hello.c -m32 //预处理.c文件,预处理包括把include的文件包含进来以及宏替换等工作 vi hello.cpp gcc -x cpp-output -S -o hello.s hello.cpp -m32 //编译 vi hello.s gcc -x assembler -c hello.s -o hello.o -m32 //汇编 vi hello.o gcc -o hel…
陈巧然原创作品 转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-100002900 实验目的 使用gdb跟踪sys_execve内核函数的处理过程,分析exec*函数对应的系统调用处理过程,理解Linux内核如何装载和启动一个可执行程序. 实验过程 登陆实验楼虚拟机http://www.shiyanlou.com/courses/195 打开shell终端,执行以下命令: cd LinuxKernel rm -rf…