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.igcc -S main.i -o main.sgcc -c main.s -o main.o生成main.imain.smain.o加上原本的main.c一共四个文件,同时对add.csub.cmul.cdiv.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.osub.omul.odiv.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的功能

  1. main与其他分开,制作静态库和动态库

  2. 编写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位)的更多相关文章

  1. 20155215 第二周测试1 与 myod

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

  2. 2019年春季学期第二周作业 基础作业 请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。 输入: 请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。 输出 在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件

    ~~~ include<stdio.h> include<stdlib.h> int main() { FILE*fp; int i=0,max=0,j=0,maxb=0; i ...

  3. FJUT寒假作业第二周C题解(位运算)

    题目来源:http://210.34.193.66:8080/vj/Contest.jsp?cid=161#P2 题意比较好理解.如果直接按题目要求一步一解.一定超时.作为一个懒人也不会这么暴力一个肯 ...

  4. 20155207第二周myod以及课堂测试

    第二周myod以及课堂测试 第二周测试5 题目 1.除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main ...

  5. 20155229 2016-2017-2 《Java程序设计》第二周学习总结

    20155229 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 布尔:boolean类型可表示true和false %符号被用来作为控制符号前置,所以规定用 ...

  6. 20155233刘高乐 第二周课堂实践以及MyOD

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

  7. 20155320信息安全系统设计第二周课堂考试总结及myod的实现

    20155320 信息安全系统设计第二周课堂考试总结及myod的实现 第二周测试一二已在课上提交 第二周测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置一个行断点 在main ...

  8. 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结

    20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...

  9. 2019-2020-1 20199329《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 一.上周问题总结: 未能及时整理笔记 Linux还需要多用 markdown格式不熟练 发布博客时间超过规定期限 二.本周学习内容: <庖丁解 ...

随机推荐

  1. 什么情况下JVM内存中的一个对象会被垃圾回收?

    新生代满了会触发 Young GC,老年代满了会触发 Old GC.GC时会回收对象,那么具体是什么样的对象会被垃圾回收器回收呢? 可达性分析算法,判断是否被 GC Roots 引用 判断引用类型:强 ...

  2. Python——NumPy库入门

    1.数据的纬度 维度:一组数据的组织形式 1.1 一维数据 一维数据由对等关系的有序或无序数据构成,采用线性方式组织 ,对应列表.数组和集合等概念 列表:数据类型可以不同 ,如 3.1413, 'pi ...

  3. js函数简单调用

    <script> //最简单的调用 //这是JavaScript DOM编程艺术(第2版)关于函数的原码 function convertToCelsius(temp) { var res ...

  4. 模拟Java内存溢出

    本文通过修改虚拟机启动参数,来剖析常见的java内存溢出异常(基于jdk1.8). 修改虚拟机启动参数Java堆溢出虚拟机栈溢出方法区溢出本机直接内存溢出 修改虚拟机启动参数   这里我们使用的是ID ...

  5. [教程]KALI LINUX 2.0 2019 更新国内源

    2019年最新版本KALI 为 KALI 2019.1 下载地址:https://www.kali.org/downloads/ 有的新入门的朋友可能会问,为什么每次都无法手动更新 例如:Update ...

  6. Android ConstraintLayout 构建自适应界面

    原文链接 使用 ConstraintLayout 构建自适应界面 ConstraintLayout 可让您使用扁平视图层次结构(无嵌套视图组)创建复杂的大型布局.它与 RelativeLayout 相 ...

  7. idea 本地代码被覆盖问题

    一不小心误操作先执行更新操作怎么办!辛辛苦苦工作一下午的代码全被覆盖了,心里紧张死了!不过别着急,还好用的idea,请看如图操作! 1.点击鼠标右键 => 2.点击Local History = ...

  8. PTA数据结构与算法题目集(中文) 7-35 城市间紧急救援 (25 分)

    PTA数据结构与算法题目集(中文)  7-35 城市间紧急救援 (25 分) 作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市 ...

  9. Java字符串的应用

    字符串的简单应用 public class join { public static void main (String args[]){ String s1 = new String (" ...

  10. Nodejs开发微信公众号中控服务

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本项目旨在为多个微信公众号 ...