Linux内核分析之简析加载和启动一个可执行程序

本文介绍了Linux内核如何加载和启动可执行程序,包括预处理、编译、汇编和链接的过程。通过分析execve系统调用,详细讲解了动态链接的两种方式以及在内核中的处理流程,特别是动态链接库的装载时和运行时动态链接。文章还探讨了execve系统调用返回后,静态链接和动态链接程序的区别,并提供了实验步骤以帮助读者加深理解。
摘要由CSDN通过智能技术生成

SA16225055冯金明    原创作品转载请注明出处 

Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

实验内容

实验要求:

  • 理解编译链接的过程和ELF可执行文件的格式
  • 编程使用exec* 库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式
  • 使用gdb跟踪分析一个execve系统调用内核处理函数sys_execve,验证对linux系统可执行程序所需处理过程的分析的理解
  • 特别关注新的可执行程序是从哪里开始执行的?为什么execve系统调用返回后新的可执行程序能顺利执行?对于静态链接的可执行程序和动态链接的可执行程序execve系统调用返回时会有什么不同
关键实验截图:
  • 在test.c中添加Exec()函数,并在menu命令中添加exec命令,修改Makefile,如图一所示
  • 使用gdb调试,添加相应的断点,如图二所示
  • 通过调试,查看加载和启动一个可执行程序的具体过程,如图三所示

图一 Exec( )

图二 设置断点
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值