20155222 第二周测试
20155222 第二周测试
- 1 vi
- 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
- 用Vi输入图中代码,并用gcc编译通过
- 在Vi中使用K查找printf的帮助文档
- 提交vi编辑过程截图,要全屏,包含自己的学号信息
遇到问题:
1.头文件的命名中不能带有下划线
2.gcc -c 命令中的c必须是小写 - 2 gcc测试
- 用gcc 进行预处理,编译,汇编,链接vi输入的代码
- 生成的可执行文件中要有自己的学号
- 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
遇到问题:将main.o文件链接为可执行文件必须同时链接其依赖的add.o、sub.o、mul.o、div.o文件
- 3 gdb测试
- 用gcc -g编译vi输入的代码
- 在main函数中设置一个行断点
- 在main函数增加一个空循环,循环次数为自己学号后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 静态库的测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
静态库是一些目标文件(后缀名为.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 共享库的测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
- 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
由于动态链接库函数的共享特性,它们不会被拷贝到可执行文件中。在编译的时候,编译器只会做一些函数名之类的检查。在程序运行的时候,被调用的动态链接库函数被安置在内存的某个地方,所有调用它的程序将指向这个代码段。因此,这些代码必须实用相对地址,而不是绝对地址。在编译的时候,我们需要告诉编译器,这些对象文件是用来做动态链接库的,所以要用地址不无关代码(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 第二周测试相关推荐
- 2017-2018-1 20155308 《信息安全系统设计基础》第二周测试(课上+课下)
2017-2018信息安全系统设计基础 课堂测试 这次课堂测试我的前四项都已经完成,但是感觉自己对Linux环境还是不太了解,所以写了这篇博客总结一下这次课堂测试做题的方法和注意事项 1-vi 要求: ...
- 第二周:自然语言处理与词嵌入
第二周:自然语言处理与词嵌入 2.1 词汇特征(Word Representation) 词嵌入 Word Embedding t-SNE 2.2 使用词嵌入 Name entity例子 步骤: 词向 ...
- 软件质量与测试--第二周作业 WordCount
软件质量与测试--第二周作业 WordCount Github地址: https://github.com/RicardoDZX/WordCount PSP: PSP2.1 PSP 阶段 预估耗时 ( ...
- java编程测试标识符是否正确_20145209刘一阳《JAVA程序设计》第二周课堂测试
第二周课堂测试 1.if关键字后面的小括号内,表达式的值可以为10.(B) A .true B .false 2.表达式0xaa | 0x55的值为(C) A .FF B .0 C .255 D .1 ...
- 20165334 四则运算阶段性总结(第二周)
四则运算阶段性总结(第二周) 结对对象 学号 :20165334 姓名 : 李天龙 担任角色 (驾驶员):李天龙 (副驾驶):陈国超 一.实验实现步骤 整数计算类 分数计算类 自动生成题目的类 测试结 ...
- 软件工程 第二周作业
##软件工程第二周作业 提出问题 1. 一般来说,想要自己的程序跑得又快又好,就要减少函数的反复调用,但有所得则必有所失,效能提高就有可能伴随着程序的稳定性的降低,这两者应该如何权衡呢? 2. 关于5 ...
- 20172307 结对编程项目-四则运算 第二周 阶段总结
20172307 结对编程项目-四则运算 第二周 阶段总结 (结队项目码云地址) 相关过程截图(关键代码处加了注释) 编写出实现中缀转后缀的类Transform /*Transform.java 作者 ...
- 2017-2018-1 20155230 《信息安全系统设计基础》第二周课堂实验
因第二周电脑没电没能交上作业,所以写博客补上. 1-vi测试 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助 ...
- 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入
本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...
最新文章
- 12、INNER JOIN:内连接
- 这些Android高级必会知识点你能答出来几个?含BATJM大厂
- mysql备份去掉一个库_MySQL备份与恢复(3)mysqldump备份多个库
- 特别引人注目的头像_设计样式指南:构建引人注目的产品的要素
- bash error 环境变量错误
- 查看daemon使用技巧
- 117. Populating Next Right Pointers in Each Node II 计算右边的附属节点
- boost::shared_ptr文档翻译
- python : 使用 __future__ 的作用
- Qt5学习笔记之串口助手三:打包成Windows软件
- Yale CAS + .net Client 实现 SSO(2)
- paip.跨平台跨语言自定义加密方法
- 极光开发者周刊【No.0827】
- [gdc17]《守望先锋》的EntityComponent架构
- 免费公开课:讲解DevExpress 2016.2新版本功能
- Qt Creator下载安装以及Qt和Qt Creator的区别
- 手写Hashmap第二版
- 【九】分布式微服务架构体系详解——共识问题
- 联发科 MTK6765 八核安卓核心板主板定制方案
- 软件项目经理,如何确保项目管理三大目标(质量、进度、成本)的达成?