• 2020-2021-1 20209307 《Linux内核原理与分析》第八周作业


    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)>
    这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第八周作业>
    这个作业的目标 <Linux内核如何装载和启动一个可执行程序>
    作业正文 https://www.cnblogs.com/wzyxiaowang/p/14057173.html

    一、知识点:
    1、预处理、编译、链接和目标文件的格式
    (1)预处理阶段 :编译器将C源代码中包含的头文件编译进来和执行宏替换等工作。
    gcc -E -o XX.cpp XX.c -m32 (XX.cpp是预处理文件)
    (2)编译器生成汇编代码阶段:gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。gcc -x cpp-output -S -o hello.s hello.cpp -m32 (XX.s是汇编代码)
    (3)汇编器生成目标代码阶段:把编译阶段生成的XX.S文件转成二进制目标代码。
    gcc -x assembler -c hello.s -o hello.o -m32 (XX.o是目标代码)
    (4)链接器生成可执行文件阶段(将编译输出XX.o文件链接成最终的可执行文件)。gcc -o hello.static hello.c -m32 -static
    (5)运行(若链接没有-o指明,则生成可执行文件默认为a.out)./a.out
    2、ELF目标文件格式
    (1)概述:ELF文件全称是Executable Linking Format(可执行连接格式),最初由unix系统实验室发布,它是应用程序二进制接口(Application Binary Interface,ABI)的一部分。在linux下,它是可执行文件的格式,由System V Release 4在COFF的基础上引入的,与之相对应的就是大家所熟悉的windows下的exe文件,exe文件是由microsoft基于COFF格式改变而成。
    (2)分类:可重定位文件:一般是中间文件,还需要继续处理。由编译器和汇编器创建,一个源代码文件会生成一个可重定位文件。
    可执行文件:一般由多个可重定位文件结合生成,是完成了所有重定位工作和符号解析的文件。
    共享目标文件:共享库,指可以被可执行文件或其他库文件使用的目标文件,例如标准C的库文件libc.so。
    (3)目标文件结构

    (4)相关操作指令
    man elf:查看elf详细的格式定义
    readelf:用于显示一个或多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
    objdump:显示二进制文件信息,用于查看目标文件或者可执行的目标文件的构成的gcc工具。
    二、实验七:Linux内核如何装载和启动一个可执行程
    将menu目录删除,利用git命令克隆一个新的menu目录,然后用test_exec.c将test.c覆盖

    rm -rf menu 
    git clone https://github.com/mengning/menu.git
    

    test_exec.c将test.c覆盖,重新编译

    mv test_exec.c test.c
    

    查看添加的Exec函数

    make rootfs
    

    QEMU中利用help命令查看,并执行exec命令

    启动gdb,通过端口1234建立连接,在sys_exec、load_elf_binary、start_thread处设置断点

    按c继续执行

    第三个断点start_thread处,可以看到修改了eip的值

    出调试状态后,查看hello的ELF头部信息

  • 相关阅读:
    CSU1661: Query Mutiple
    U磁盘检测和大量收集量产工具
    DBMS_RLS包实现数据库表中的行级安全控制
    vim note(4)
    android 时间对话框 TimePickerDialog简介
    手动露天广场和立方体
    将JDBC ResultSet结果集变成List
    PS CS5如何在一张图片里插入另一张图片?
    图文教您轻松学会用PS设计制作名片
    常用颜色的RGB值
  • 原文地址:https://www.cnblogs.com/wzyxiaowang/p/14057173.html
Copyright © 2020-2023  润新知