2.3.1测试
2.3.1测试
任务
- 编辑并运行2.3.1中的代码,要求在不修改t2.c 和 t1.c中main函数中的代码的情况下,程序运行结果是你的后四位学号。提交代码和运行结果截图。
- t1.c
- t2.c
- 编译并运行
- 网上学习objdump命令,提交不少于5篇博客链接和微信读书上的图书链接,并给出你认为最好的讲解资源的链接或图书名及章节.
- objdump命令_Linux教程(讲的非常详细,而且每条命令都有单独的解释,很适合新手学习)
- objdump_博客园
- objdump入门
- Linux:objdump命令解析
- Linux之objdump简书
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通过读链接库目录,获取关联的库来实现。而链接库目录通常被设置为环境变量。链接库的好处就是移植性好,静态链接的优点就是执行程序时不需要考虑再链接问题了,因为静态链接库中的代码已经被合成进可执行文件中,这样的坏处就是使得可执行文件大小变得大,显得浪费空间。
- 使用