zoukankan      html  css  js  c++  java
  • C语言实现Linux命令——od

    C语言实现Linux命令——od

    实现要求:

    - 第二周测试1-vi

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

    image

    依次输入每个文件内容

    使用命令gcc *.c一直编译成功

    第二周测试2-gcc测试

    1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码

    2. 生成的可执行文件中要有自己的学号

    3.提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息

    • 一般格式为:gcc [选项] 要编译的文件 [选项] 目标文件gcc -E hello.c -o hello.i

    • gcc将代码翻译成汇编语言,使用选项-S只进行编译而不进行汇编,结果生成汇编代码。gcc -S hello.i -o hello.s

    • 将.s文件转成目标文件,使用选项-c可以看到汇编代码转换为二进制目标代码。gcc -c hello.s -o hello.o

    默认搜索链接到libc.so.6函数库当中,调用库文件中已经实现的函数。
    运行:./hello

    第二周测试3-gdb测试

    1. 用gcc -g编译vi输入的代码
    2. 在main函数中设置一个行断点
    3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
    4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    设置断点

    函数:b 文件名.c:函数名

    行:b 行数

    条件:b 行数 if 表达式(例如:b 9 if == 12)

    临时:tb [文件名:]行号或函数名 <条件表达式>

    课堂实践过程:

    gcc -g *.c -o main
    gdb main
    b main
    b 6 if i==2662
    info break
    r
    q
    

    第二周测试4-静态库的测试

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?

    2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    静态链接库的生成:gcc -c 文件名.c ar rcsv libxxx.a xxx.o;

    静态库的使用:gcc -o 文件名 文件名.c -L. -lxxx

    课堂实践过程:

    ar cr math.a add.o sub.o mul.o div.o

    gcc main.c ./math.a -o main

    第二周测试5-共享库

    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?

    2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    共享库的生成:gcc -fPIC -c xxx.c gcc -shared -o libxxx.so xxx.o;

    共享库的使用:gcc -o main main.c -L. -lxxx

    课堂实践过程:

    生成:

    gcc -fPIC -c add.c sub.c mul.c div.c

    gcc -shared -o libmymath.so add.o sub.o mul.o div.o

    使用:

    gcc -o main main.c -L. -lmymath

    第二周测试6-Makefile

    1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

    2 提交Make过程截图,要全屏,包含自己的学号信息

    testmymath:MYOD.o change.o ascii.o

     gcc MYOD.o change.o ascii.o -o testmymath
    

    MYOD.o:MYOD.c head.h

    gcc -c MYOD.c
    

    change.o:change.o head.h

    gcc -c change.o
    

    ascii.o:ascii.c head.h

    gcc -c ascii.c
    

    myod

    实现od -tc -tx1 XXX命令,

    -tc表示输出ASCII字符,

    -tx1表示以十六进制输出,
    每组输出一字节。

    动态库

    Makefile

    代码托管

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:10小时

    • 实际学习时间:5小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    python学习之计算机基础详解
    python学习笔记-day03
    名称空间与作用域
    函数参数的应用
    day14
    day13
    函数的基本使用
    day12
    day 09
    文件操作
  • 原文地址:https://www.cnblogs.com/wang5324/p/7616183.html
Copyright © 2011-2022 走看看