2.3.1测试

2.3.1测试

任务

  1. 编辑并运行2.3.1中的代码,要求在不修改t2.c 和 t1.c中main函数中的代码的情况下,程序运行结果是你的后四位学号。提交代码和运行结果截图。
  • t1.c
  • t2.c
  • 编译并运行
  1. 网上学习objdump命令,提交不少于5篇博客链接和微信读书上的图书链接,并给出你认为最好的讲解资源的链接或图书名及章节.

3 用objdump分析第1步中的可执行文件和目标文件,提交你的分析截图以及如何和教材讲解内容对应的,比如obj文件的文件头,代码段,数据段等,可执行文件如何链接mysum的。

  • 使用objdump -d命令进行反汇编
  • 查看obj文件的文件头
    • 使用objdump -h 查看文件段头信息
    • 使用objdump -f 查看文件格式
    • 使用objdump -S 反汇编代码
    • 使用objdump -d -j .data 查看数据段
    • 使用objdump -d -j .bss 查看bss段
    • main函数在执行到mysum时,连接了mysum函数所在的地址
      • 链接方式有两种,一种是静态链接,另一种是动态链接。例如 A文件引用了B文件 ,所谓静态链接,就是将A和B打包进同一个最终可执行文件中。而动态链接,函数库B无需打包进可执行文件中,当A也需要引用到B时,A通过读链接库目录,获取关联的库来实现。而链接库目录通常被设置为环境变量。链接库的好处就是移植性好,静态链接的优点就是执行程序时不需要考虑再链接问题了,因为静态链接库中的代码已经被合成进可执行文件中,这样的坏处就是使得可执行文件大小变得大,显得浪费空间。
原文地址:https://www.cnblogs.com/dongjiashuai/p/15486958.html