Makefile与Myod
Makefile的引入
课堂测试总结
初识Makefile
target ... : prerequisites ...
command
...
...
- target也就是一个目标文件,可以是Object File,也可以是执行文件。也就是
gcc -o后面要生成的目标文件。 - prerequisites就是,要生成那个target所需要的文件或是目标。可以是.c文件或.h的头文件
- command也就是make需要执行的命令。(任意的Shell命令)也就是命令行中输入的命令。
要求
写出编译第二周测试中vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以。
代码调试中的问题及解决方法
- 编写makefile的时候,一直出现错误

到网上查找资料,发现输入命令前要用tab键。 - 输入tab,make还是出错,查找资料,在.vimrc文件中添加配置
set tabstop=4
运行还是出错 - 对比网上的vim配置文件,我试着将
set expandtab改成set noexpandtab,保存后运行成功了。
运行结果

Myod
要求
- 复习c文件处理内容
- 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
- main与其他分开,制作静态库和动态库
- 编写Makefile
od -tx -tc的功能
-t<输出格式>或--format=<输出格式>:设置输出格式;
就是在十六进制输出其ascii值的同时,显示对应的文件内容

代码调试中的问题及解决方法
- 编写完代码之后,发现只输出第一个字符
修改代码之后,发现是因为第一个字符在字符串中下标为0,会直接跳出循环,只输出第一个字符 - 修改代码完之后,编写makefile文件,出现错误

多次修改makefile,发现要先将main所在的文件编译才可以。那么,如何在makefile中确定命令的先后顺序呢?查找资料发现,可以用;将同时执行的命令隔开,达到一起运行的目的。
静态库

动态库

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

- 实现
od -tc -tx1

码云链接
参考资料
Makefile与Myod的更多相关文章
- 20155301 Makefile和MyOD和共享库
20155301 Makefile和MyOD和共享库 Makefile 作用:make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序. 我们要写一个Mak ...
- 20155319 2017-2018-1《信息安全系统设计》第四周课堂测试、Makefile、myod
20155319 2017-2018-1<信息安全系统设计>第四周课堂测试.Makefile.myod 测试2-gcc测试 1.用gcc 进行预处理,编译,汇编,链接vi输入的代码 2.生 ...
- 20155339 2017-2018-1《信息安全系统设计》第四周课堂测试、Makefile以及myod
20155339 2017-2018-1<信息安全系统设计>第四周课堂测试.Makefile以及myod 测试1-vi 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi ...
- 2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod
2017-2018-1 20155318 <信息安全系统设计基础>第2周课堂实践.makefile.以及myod 测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置 ...
- 20155215 第二周测试1 与 myod
课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...
- 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现
20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...
- 20155326 2017-2018-1 《信息安全系统设计基础》第2周学习及课堂总结myod
20155326 2017-2018-1 <信息安全系统设计基础>第1次学习及课堂总结myod 虚拟机之前出了一些问题,然后我重新弄了一个新的虚拟机. 先在虚拟机里面安装了git. 安完以 ...
- 2017-2018-1 20155313 《信息安全系统设计基础》 Myod
2017-2018-1 20155313 <信息安全系统设计基础> Myod Myod要求 1.复习c文件处理内容 2.编写myod.c 用myod XXX实现Linux下od -tx - ...
- 20155207第二周myod以及课堂测试
第二周myod以及课堂测试 第二周测试5 题目 1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main ...
随机推荐
- 解析Java对象的equals()和hashCode()的使用
解析Java对象的equals()和hashCode()的使用 前言 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个.在多 ...
- Oracle密码过期the password has expired解决办法
oracle 出现the password has expired这个问题,今天突然发现项目访问不了,一查发现用不了,也登不进去, 这个问题由是Oracle11g密码过期的原因导致的 调试Web项目的 ...
- Django settings.py 的media路径设置
转载自:http://www.xuebuyuan.com/676599.html 在一个 models 中使用 FileField 或 ImageField 需要以下步骤: 1. 在你的 settin ...
- Linux环境编程之IPC进程间通信(五):Posix消息队列1
对于管道和FIFO来说.必须应该先有读取者存在.否则先有写入者是没有意义的. 而消息队列则不同,它是一个消息链表,有足够写权限的线程可往别的队列中放置消息,有足够读权限的线程可从队列中取走消息.每一个 ...
- 巧用DNSlog实现无回显注入
测试一些网站的时候,一些注入都是无回显的,我们可以写脚本来进行盲注,但有些网站会ban掉我们的ip,这样我们可以通过设置ip代理池解决, 但是盲注往往效率很低,所以产生了DNSlog注入.具体原理如下 ...
- 用ReentrantLock和Condition实现线程间通信
在Java多线程中,除了使用synchronize关键字来实现线程之间的同步互斥,还可以使用JDK1.5中新增的RetrantLock类来实现同样的效果.RetrantLock类的扩展功能也更加强大, ...
- 20165302 实验一 java开发环境的熟悉
20165302实验一 java开发环境的熟悉 一,实验内容与步骤 1.命令行下java程序开发 ①待编译运行代码 package csj; import java.util.Scanner; pub ...
- css一边固定,另一边自适应的方法
第一种: 第二种:
- Ubuntu SSH登陆出现Access Denied错误
在/etc/ssh/sshd_config 中有个 PermitRootLogin, 改成“PermitRootLogin yes”就可以了 重启ssh: /etc/init.d/ssh restar ...
- 【转】:ZooKeeper真不是最终一致性的,而是顺序一致性
转:ZooKeeper真不是最终一致性的,而是顺序一致性 关键字:ZooKeeper / 分布式系统的一致性 我们可以这么理解 ZooKeeper,从整体(read 操作 +write 操作)上来说是 ...