周报二

#第二周周报也要写啦 咱都不知道干了些啥 感觉有点皮的


说说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的题,自己关于汇编的知识甚至没多大卵用。

对于基础还是薄弱。


惊了,我还是回宿舍睡觉吧




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值