2019-2020-1 20199329 第二周测试(环境:ubuntu64位)
2019-2020-1 20199329 第二周测试(环境:ubuntu64位)
实验一
0.每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
1.用Vi输入图中代码,并用gcc编译通过
2.在Vi中使用K查找printf的帮助文档
3.提交vi编辑过程截图,要全屏,包含自己的学号信息
解决方案
1.创建6个空文件,将图片中每个函数分别写入一个空文件中,并修改文件名,除了头文件后缀名为.h以外,其他的文件后缀名都为.c。
2.启动终端,输入gcc -c *.c
,对文件夹中所有的.c文件进行编译,得到.o文件
3.在文件夹中的终端输入vim main.c
,再次敲击回车显示该函数的编辑界面。第二步将光标移动到语句printf
上,然后输入大写K显示帮助文档
实验二
1.用gcc进行预处理,编译,汇编,链接vi输入的代码
2.生成的可执行文件中要有自己的学号
3.提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
解决方案
1.在文件夹中打开终端,依次输入gcc -E main.c -o main.i
、gcc -S main.i -o main.s
、gcc -c main.s -o main.o
生成main.i
、main.s
、main.o
加上原本的main.c
一共四个文件,同时对add.c
、sub.c
、mul.c
、div.c
也进行操作。
2.在终端中输入gcc -o 20199329 *.o
生成以学号为名的可执行文件,并输入./20199329
运行程序。
实验三
1.用gcc -g编译vi输入的代码
2.在main函数中设置一个行断点
3.在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
3.提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
解决方案
1.打开终端输入gcc -g *.c -o test
生成一个可执行gdb文件test,.输入gdb test
进入gdb调试模式,再输入l显示test文件内容,在test中写入一个for(i=0;i<5313;i++)
的空循环用来检测断点。在gdb调试窗口输入b main
在主函数第一行设置一个断点,然后再输入b 13 if i==2600
即在第2600次循环处设置另一个断点。再输入info break
显示断点信息,然后再输入r运行程序,遇到断点会显示断点内容,因为该循环设置为空,所以循环处断点没有内容显示。若再循环内设计一个计数器,循环内断点处会显示计数为2600。
实验四
1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
2.提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
解决方案
1.首先输入ar -cr mymath.a add.o sub.o mul.o div.o
建立一个静态库并把add.o
、sub.o
、mul.o
、div.o
复制进这个静态库里,之后的操作与上一个实验相似,对循环进行断点调试。
实验五
1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
2.提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
解决方案
1.在终端中输入gcc -shared -fpic -o mymath.so add.c sub.c mul.c div.c
,建立一个有四个c文件的共享库。再输入gcc -o prog2 main.c ./mymath.so
,生成一个可执行文件prog2。最后直接输入./prog2
便可以运行该文件。
实验六
1.写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
2.提交Make过程截图,要全屏,包含自己的学号信息
解决方案
1.首先 vim Makefile编写,然后在shell中输入make,运行生成的目标文件:
思考题Myod
1 复习c文件处理内容
2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
main与其他分开,制作静态库和动态库
编写Makefile
5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
6 在博客园发表一篇博客,重点写遇到的问题和解决过程
解决方案
1.代码实现:
2.实现方法:ascii值输出是将%c输出转换为%d输出,十六进制输出是将%c输出转换为%x输出。
3.静态库制作如下图:
4.动态库制作如下图:
5.makefile文件制作如下图:
(1)首先,输入vim Makefile,编辑以下内容:
(2)其次,输入以下命令执行文件:
2019年9月25日
2019-2020-1 20199329 第二周测试(环境:ubuntu64位)的更多相关文章
- 20155215 第二周测试1 与 myod
课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...
- 2019年春季学期第二周作业 基础作业 请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。 输入: 请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。 输出 在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件
~~~ include<stdio.h> include<stdlib.h> int main() { FILE*fp; int i=0,max=0,j=0,maxb=0; i ...
- FJUT寒假作业第二周C题解(位运算)
题目来源:http://210.34.193.66:8080/vj/Contest.jsp?cid=161#P2 题意比较好理解.如果直接按题目要求一步一解.一定超时.作为一个懒人也不会这么暴力一个肯 ...
- 20155207第二周myod以及课堂测试
第二周myod以及课堂测试 第二周测试5 题目 1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main ...
- 20155229 2016-2017-2 《Java程序设计》第二周学习总结
20155229 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 布尔:boolean类型可表示true和false %符号被用来作为控制符号前置,所以规定用 ...
- 20155233刘高乐 第二周课堂实践以及MyOD
1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so? 2. 提交共 ...
- 20155320信息安全系统设计第二周课堂考试总结及myod的实现
20155320 信息安全系统设计第二周课堂考试总结及myod的实现 第二周测试一二已在课上提交 第二周测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置一个行断点 在main ...
- 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结
20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...
- 2019-2020-1 20199329《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...
随机推荐
- A 大地魂力
时间限制 : - MS 空间限制 : - KB 评测说明 : 1s,256m 问题描述 奶牛贝西认为,要改变世界,就必须吸收大地的力量,贝西把大地的力量称为魂力.要吸取大地的魂力就需要在地上开出 ...
- ajax前端传递对象给后端
前端操作如下即可:
- PTA | 1009说反话(20分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有 ...
- Java第三十五天,用JDBC操作MySQL数据库(一),基础入门
一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...
- javascript 入门 之select2功能大全
1.代码较为简单,不作太多讲解,新建一个javascript工程,在index.htl中编写如下代码,根据<link>和<script>标签配制好js和css库便可! < ...
- CH5701 开车旅行(倍增dp+set)
传送门 解题思路: 一道比较有趣的题,解题工作主要分为两块: ①找出k(k=0表示小A先走,k=1表示小B先走,下面同理)从点i出发下一个到达的点to[k][i]; 一开始偷懒用了vector(偷懒一 ...
- 从谷歌面试翻车到offer收割的心路历程
首先声明,这只是我的播客随感,其中无法避免有一些个人色彩的见解,请不要在意,我尊敬任何的互联网公司,尊敬研究生期间的老师同学,我只希望给在求学路上的CS同学一些启发. 先介绍一下背景,我是ACM铜牌退 ...
- Git应用详解第七讲:Git refspec与远程分支的重要操作
前言 前情提要:Git应用详解第六讲:Git协作与Git pull常见问题 这一节来介绍本地仓库与远程仓库的分支映射关系:git refspec.彻底弄清楚本地仓库到底是如何与远程仓库进行联系的. 一 ...
- GO代码风格指南 Uber Go (转载)
原文地址:https://github.com/uber-go/guide/blob/master/style.md 译文出处:https://github.com/uber-go/guide 本文永 ...
- typename 关键字
1.class关键字的同义词 template <typename T> const T& max(const T& x, const T& y) { return ...