陈巧然原创作品 转载请注明出处 <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…
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…
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内核分析第七周学习总结:可执行程序的装载 韩玉琪 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 内容提要 一.得到一个可执行程序 1. 预处理.编译.链接 gcc hello.c -o hello.exe gcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤. 预处理 => 编译 => 汇编 => 链接 预处理:编译器将C源代…
LINUX内核分析第七周学习总结 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 可执行程序的装载 1.可执行程序时如何产生的 编译器预处理 gcc -E -o XX.cpp XX.c (-m32)//.cpp是预处理文件 汇编器编译成汇编代码 gcc -x cpp-output -S -o hello.s hello.cpp (-m32…
LINUX内核分析第六周学习总结——进程的描述和进程的创建 张忻(原创作品转载请注明出处) <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.知识概要 (一)预处理.编译.链接和目标文件的格式 1.可执行程序是怎么得来的 2.目标文件的格式ELF 3.静态链接的ELF可执行文件和进程的地址空间 (二)可执行程序.共享库和动态加载 1.装载可执行程序之前的工作 2.装载时动态链接和运行时动态链接应用举例 (三)…
可执行程序的装载 一.预处理.编译.链接和目标文件的格式 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) 注:不可读,含有部分机器代码但不可执…
一.编译链接的过程和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内核如何装载和启动一个可执行程序 一.编译链接的过程和ELF可执行文件格式 可执行文件的创建——预处理.编译和链接 在object文件中有三种主要的类型. 一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件. 一个可执行(executable)文件保存着一个用来执行的程序:该文件指出了exec(BA_OS)如何来创建程序进程映象. 一个共享object文件保存着代码和合适的数据,用来被下面的两…
原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 题目自拟,内容围绕对Linux内核如何装载和启动一个可执行程序 可以结合实验截图.ELF可执行文件格式.用户态的相关代码等 博客内容中需要仔细分析新可执行程序的执行起点及对应的堆栈状态等 总结部分需要阐明自己对“Linux内核装载和启动一个可执行程序”的理解 实验报告: 理解编译链接的过程和ELF可执行文件格式: C代码——预处理——汇…