Makefile的引入

课堂测试总结

初识Makefile

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

要求

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

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

  1. 编写makefile的时候,一直出现错误



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

运行结果

Myod

要求

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

od -tx -tc的功能

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

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

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

  1. 编写完代码之后,发现只输出第一个字符

    修改代码之后,发现是因为第一个字符在字符串中下标为0,会直接跳出循环,只输出第一个字符
  2. 修改代码完之后,编写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的更多相关文章

  1. 20155301 Makefile和MyOD和共享库

    20155301 Makefile和MyOD和共享库 Makefile 作用:make命令执行时,需要一个 Makefile 文件,以告诉make命令需要怎么样的去编译和链接程序. 我们要写一个Mak ...

  2. 20155319 2017-2018-1《信息安全系统设计》第四周课堂测试、Makefile、myod

    20155319 2017-2018-1<信息安全系统设计>第四周课堂测试.Makefile.myod 测试2-gcc测试 1.用gcc 进行预处理,编译,汇编,链接vi输入的代码 2.生 ...

  3. 20155339 2017-2018-1《信息安全系统设计》第四周课堂测试、Makefile以及myod

    20155339 2017-2018-1<信息安全系统设计>第四周课堂测试.Makefile以及myod 测试1-vi 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi ...

  4. 2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod

    2017-2018-1 20155318 <信息安全系统设计基础>第2周课堂实践.makefile.以及myod 测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置 ...

  5. 20155215 第二周测试1 与 myod

    课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...

  6. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现

    20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...

  7. 20155326 2017-2018-1 《信息安全系统设计基础》第2周学习及课堂总结myod

    20155326 2017-2018-1 <信息安全系统设计基础>第1次学习及课堂总结myod 虚拟机之前出了一些问题,然后我重新弄了一个新的虚拟机. 先在虚拟机里面安装了git. 安完以 ...

  8. 2017-2018-1 20155313 《信息安全系统设计基础》 Myod

    2017-2018-1 20155313 <信息安全系统设计基础> Myod Myod要求 1.复习c文件处理内容 2.编写myod.c 用myod XXX实现Linux下od -tx - ...

  9. 20155207第二周myod以及课堂测试

    第二周myod以及课堂测试 第二周测试5 题目 1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main ...

随机推荐

  1. [T-ARA][거짓말(Part.1)][谎言(Part.1)]

    歌词来源:http://music.163.com/#/song?id=5403062 作曲 : 赵英秀 [作曲 : 赵英秀] 作词 : 安英民 [作词 : 安英民] 사랑한단 거짓말 보고싶을거란 ...

  2. 初进MFC的世界,太奇妙。第六次作业----未完待续

    又一次的迁徙.我希望能够早些抵达. 第六次作业-未完待续!图形界面,计算器文件 本次的作业是给自己的计算器加一个可视化的窗口,我开始也是很激动和憧憬的,看了很多的界面库,发现并没有想象的那么简单,因为 ...

  3. Ubuntu 12.04中MyEclipse 10.6+下载+安装+破解

    至于MyEclipse在Ubuntu的安装教程网上很多,那我为什么我还写这篇文章呢?这次重装Ubuntu之后, 在安装MyEclipse 10.6过程中遇到了一个问题,所以把MyEclipse的安装方 ...

  4. IOS http(上传和下载)

    HttpTool.h #import <Foundation/Foundation.h> typedef void (^HttpToolProgressBlock)(CGFloat pro ...

  5. Jackson实现Object对象与Json字符串的互转

    在项目开发过程中,当客户端与服务器响应时,数据交互是必不可少的.然而通过Json实现数据交互成为我们开发中的一部分,进而Jackson为我们的Json转化提供了很好的机制.下面我将利用实例总结如何使用 ...

  6. archer 安装

    archer 项目地址: https://github.com/jly8866/archer 安装docker版本 Pull Docker docker pull hhyo/archer 启动服务do ...

  7. ROIPooing

    暂时不纠结 faster rcnn 最后一步是不是全连接层(gluoncv里面是rcnn层): 说一下feature map 和 anchor (Proposal) 作为输入,怎么计算ROIPooin ...

  8. [SQL注入] 逗号拦截绕过

    在SQL注入时,在确定了注入点后,一般都需要使用联合查询猜表的列数,也就是常见的order by n,n从大到小,直到返回正常,就确定了当前查询的列的个数. 然后再使用 UNION SELECT 1, ...

  9. awk 简单使用 egrep 正则表达式

    [root@python ~]# cat testcount.txt a 1.1.1.1b 2.2.2.2c 3.3.3.3a 1.1.1.1d 4.4.4.4e 5.5.5.5f 6.6.6.6 1 ...

  10. ansible copy 模块 changed false 没有变化

    在分发配置文件的时候,我用命令ansible big_hosthub  -m copy -a "src=/home/clouder/deploy-conf.xml dest=/home/cl ...