zoukankan      html  css  js  c++  java
  • Makefile与Myod

    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

    码云链接

    参考资料

  • 相关阅读:
    linux虚拟机时间同步
    jdk的下载
    xshell 使用命令上传、下载文件
    linux常用命令
    linux使用"userdel 用户名“删除用户的解决办法
    List去重
    C#之数据类型学习
    EF中使用SQL语句或存储过程
    牛逼注释
    ASP.NET判断是否为手机登录
  • 原文地址:https://www.cnblogs.com/-zyl/p/7613000.html
Copyright © 2011-2022 走看看