20155222 第二周测试

  • 1 vi

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

    遇到问题:
    1.头文件的命名中不能带有下划线
    2.gcc -c 命令中的c必须是小写

  • 2 gcc测试
    1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码
    2. 生成的可执行文件中要有自己的学号
    3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息

    遇到问题:将main.o文件链接为可执行文件必须同时链接其依赖的add.o、sub.o、mul.o、div.o文件

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

    附gdb调试指令:
    l -- l命令相当于list,从第一行开始例出原码
    回车 -- 直接回车表示,重复上一次命令
    break n -- 设置断点,在源程序第n行处
    break func -- 设置断点,在函数func()入口处
    info break -- 查看断点信息
    r -- 运行程序,run命令简写
    n -- 单条语句执行,next命令简写
    c -- 继续运行程序,continue命令简写
    p i -- 打印变量i的值,print命令简写
    bt -- 查看函数堆栈
    finish -- 退出函数
    q -- 退出gdb

  • 4 静态库的测试
    1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
    2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    静态库是一些目标文件(后缀名为.o)的集合体。
    静态库的后缀名是.a,对应于windows操作系统的后缀名为.lib的静态库。
    可以使用ar命令来创建一个静态库文件。

    gcc -c add.c -o add.o
    gcc -c sub.c -o sub.o
    gcc -c mul.c -o mul.o
    gcc -c div.c -o div.o
    ar rcs libmymath.a add.o sub.o mul.o div.o 

    会在当前目录下生成一个libtest.a静态库文件。-c表示只编译,不链接。再敲入以下命令进行链接

    gcc –c main.c -o main.o
    gcc  -c static -o mymath_test main.o ./libmymath.a
  • 5 共享库的测试
  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息

    由于动态链接库函数的共享特性,它们不会被拷贝到可执行文件中。在编译的时候,编译器只会做一些函数名之类的检查。在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这个代码段。因此,这些代码必须实用相对地址,而不是绝对地址。在编译的时候,我们需要告诉编译器,这些对象文件是用来做动态链接库的,所以要用地址不无关代码(Position Independent Code (PIC))。
    对gcc编译器,只需添加上 -fPIC 标签
gcc -shared -fPIC -o libmymath2.so add.c sub.c mul.c div.c
gcc -o mymath_test2 main.c ./libmymath2.so
  • 6
    1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

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

    Makefile的规则 :
    在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则。
    target ... : prerequisites ...
    command
    ...
    ...
    target也就是一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
    prerequisites就是,要生成那个target所需要的文件或是目标。
    command也就是make需要执行的命令。(任意的Shell命令)
    这是一个文件的依赖关系,也就是说,target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。

    遇到问题:mymath中命令行必须以Tab开头
    main.c的编译不需要依赖HEAD.H??

转载于:https://www.cnblogs.com/20155222lzj/p/7616219.html

20155222 第二周测试相关推荐

  1. 2017-2018-1 20155308 《信息安全系统设计基础》第二周测试(课上+课下)

    2017-2018信息安全系统设计基础 课堂测试 这次课堂测试我的前四项都已经完成,但是感觉自己对Linux环境还是不太了解,所以写了这篇博客总结一下这次课堂测试做题的方法和注意事项 1-vi 要求: ...

  2. 第二周:自然语言处理与词嵌入

    第二周:自然语言处理与词嵌入 2.1 词汇特征(Word Representation) 词嵌入 Word Embedding t-SNE 2.2 使用词嵌入 Name entity例子 步骤: 词向 ...

  3. 软件质量与测试--第二周作业 WordCount

    软件质量与测试--第二周作业 WordCount Github地址: https://github.com/RicardoDZX/WordCount PSP: PSP2.1 PSP 阶段 预估耗时 ( ...

  4. java编程测试标识符是否正确_20145209刘一阳《JAVA程序设计》第二周课堂测试

    第二周课堂测试 1.if关键字后面的小括号内,表达式的值可以为10.(B) A .true B .false 2.表达式0xaa | 0x55的值为(C) A .FF B .0 C .255 D .1 ...

  5. 20165334 四则运算阶段性总结(第二周)

    四则运算阶段性总结(第二周) 结对对象 学号 :20165334 姓名 : 李天龙 担任角色 (驾驶员):李天龙 (副驾驶):陈国超 一.实验实现步骤 整数计算类 分数计算类 自动生成题目的类 测试结 ...

  6. 软件工程 第二周作业

    ##软件工程第二周作业 提出问题 1. 一般来说,想要自己的程序跑得又快又好,就要减少函数的反复调用,但有所得则必有所失,效能提高就有可能伴随着程序的稳定性的降低,这两者应该如何权衡呢? 2. 关于5 ...

  7. 20172307 结对编程项目-四则运算 第二周 阶段总结

    20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...

  8. 2017-2018-1 20155230 《信息安全系统设计基础》第二周课堂实验

    因第二周电脑没电没能交上作业,所以写博客补上. 1-vi测试 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助 ...

  9. 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

最新文章

  1. 12、INNER JOIN:内连接
  2. 这些Android高级必会知识点你能答出来几个?含BATJM大厂
  3. mysql备份去掉一个库_MySQL备份与恢复(3)mysqldump备份多个库
  4. 特别引人注目的头像_设计样式指南:构建引人注目的产品的要素
  5. bash error 环境变量错误
  6. 查看daemon使用技巧
  7. 117. Populating Next Right Pointers in Each Node II 计算右边的附属节点
  8. boost::shared_ptr文档翻译
  9. python : 使用 __future__ 的作用
  10. Qt5学习笔记之串口助手三:打包成Windows软件
  11. Yale CAS + .net Client 实现 SSO(2)
  12. paip.跨平台跨语言自定义加密方法
  13. 极光开发者周刊【No.0827】
  14. [gdc17]《守望先锋》的EntityComponent架构
  15. 免费公开课:讲解DevExpress 2016.2新版本功能
  16. Qt Creator下载安装以及Qt和Qt Creator的区别
  17. 手写Hashmap第二版
  18. 【九】分布式微服务架构体系详解——共识问题
  19. 联发科 MTK6765 八核安卓核心板主板定制方案
  20. 软件项目经理,如何确保项目管理三大目标(质量、进度、成本)的达成?

热门文章

  1. Mysql主从同步延迟问题及解决方案
  2. UIImageView 与 UIButton的区别
  3. JS控制图片显示的大小(图片等比例缩放)
  4. arm汇编学习(二)
  5. EntityFramework+DomainDataSource+Silverlight完成数据读取分页排序与修改
  6. 如何入门Python?你不知道的小窍门。
  7. Python破解验证码技术,识别率高达百分之八十
  8. 介绍下JSP如何进行自动刷新
  9. 如何在 Linux 上用密码加密和解密文件
  10. 介绍下Nginx 反向代理与负载均衡