Makefile与Myod

Makefile的引入

课堂测试总结

初识Makefile

target ... : prerequisites ...
command
...
...
  • target也就是一个目标文件,可以是Object File,也可以是执行文件。也就是gcc -o后面要生成的目标文件。
  • prerequisites就是,要生成那个target所需要的文件或是目标。可以是.c文件或.h的头文件
  • command也就是make需要执行的命令。(任意的Shell命令)也就是命令行中输入的命令。

要求

写出编译第二周测试中vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以。

代码调试中的问题及解决方法

  1. 编写makefile的时候,一直出现错误
    1071536-20170929123856809-1593111950.png
    到网上查找资料,发现输入命令前要用tab键。
  2. 输入tab,make还是出错,查找资料,在.vimrc文件中添加配置set tabstop=41071536-20170929124433059-2099182620.png运行还是出错
  3. 对比网上的vim配置文件,我试着将set expandtab改成set noexpandtab,保存后运行成功了。

运行结果

1071536-20170929124835794-968797285.png

Myod

要求

  1. 复习c文件处理内容
  2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
  3. main与其他分开,制作静态库和动态库
  4. 编写Makefile

od -tx -tc的功能

-t或--format=:设置输出格式;

就是在十六进制输出其ascii值的同时,显示对应的文件内容
1071536-20170929130922637-577008725.png

代码调试中的问题及解决方法

  1. 编写完代码之后,发现只输出第一个字符
    修改代码之后,发现是因为第一个字符在字符串中下标为0,会直接跳出循环,只输出第一个字符
  2. 修改代码完之后,编写makefile文件,出现错误
    1071536-20170929215105184-1776983832.png
    多次修改makefile,发现要先将main所在的文件编译才可以。那么,如何在makefile中确定命令的先后顺序呢?查找资料发现,可以用;将同时执行的命令隔开,达到一起运行的目的。

静态库

1071536-20170929220442794-1794895016.png

动态库

1071536-20170929220459122-1218973312.png

补充

经过老师提醒,我认识到我实现的是od -tc -tx的功能,而od -tc -tx1实现的功能是将内容以十六进制显示,并以一个字节为单位,两者的区别是多了一个1,如果tx后面没有参数,默认的是四字节为一组,如有参数SIZE,以SIZE字节为一组输出。修改代码后,实现od -tc -tx1功能。

运行结果

  • 实现od -tc -tx
    1071536-20170929220634856-1385232345.png
  • 实现od -tc -tx1
    1071536-20171001153359794-1471588001.png

码云链接

参考资料

转载于:https://www.cnblogs.com/-zyl/p/7613000.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值