#第二周周报也要写啦 咱都不知道干了些啥 感觉有点皮的
说说windows下的makefile吧
先看linux下的makefile:
学习makefile的好处有很多啊,能知道整个工程的编译规则 ,那些文件先编译 哪些文件后编译 哪些文件需要重新编译,可以通过手写makefile也可以通过ide内置make实现
GNU的make,visualstudio内的的nmake,,
之前在王爽的汇编语言教材中尝试过 masm link ,编译与链接。也基本是这个道理。 编译时会生成object是文件。 .o .obj 这些后缀名文件
链接时主要·是将这些object文件进行融合汇总链接应用程序。如果原文件太多,需要进行打包,行程.lib.库文件。
make的作用有将所有文件编译并链接,或者将修改的头文件或者相关c文件进行重新编译并再次编译。
以下是最简单的文件示意。
最简单的程序,并用这个makefile进行编译链接
通过这个讲讲简单的makefile构成(makefile文件取名为Makefile Or makefile 没有任何后缀名)
Makefile的规则
: target... : ...
command
...
...
-------------------------------------------------------------------------------
target是一个目标文件 可以是.o 可以是exe。还可以是一个标签(这个没有试过)
prerequisites
是生成这个文件所需的文件或者目标
command也就是所需命令 这些命令是你的编译器的命令 我用的是gcc编译器 所以命令就是gcc 下的
在linux中的edit命令像这个
edit : main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o \
insert.o search.o files.o utils.o
在windows下这个edit无法实现。会报错,不过这不影响正常编译,无伤大雅。
在最后 最好这样写
.PHONY : clean clean : del edit $(objects)
根据参考文章解释:““.PHONY”表示,clean是个伪目标文件。”
对于隐晦规则和自动推断,我不是很建议去使用,尽量使用明显的带命令模式,以免出错。
更深的层次看了一下,没去深入理解。可以参考文章:http://blog.csdn.net/ruglcc/article/details/7814546
不过感觉在windows下和linux指令存在差异,感觉不好转换(?)。
#关于重定位表
这个简单说一下,说个大概意思,证明的话自己推断就好了。
所谓的重定位,是将汇编代码段中的地址修改,并不会去修改程序本身。
改变的地址变为 原地址+ (实际装入的地址-预计装入的地址)
这周复习了关于c++ 前面的带入视频,一些简单的差别。
太弱智 也不好详说明。
这几天也在跟看雪的ctf的题,自己关于汇编的知识甚至没多大卵用。
对于基础还是薄弱。
惊了,我还是回宿舍睡觉吧