2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结

2018-2019-1 20165221 《信息安全系统设计基础》第一周学习总结

教材学习总结

有关vim

  • 打开方式:vim [文件名]
  • i会进入insert模式,可以对代码进行编辑
  • Esc会进入普通模式,此时可以使用快捷键进行编辑,编辑方式为:

    指令对应操作
    h向左移动光标
    l向右移动光标
    j向下移动光标
    k向上移动光标
    w移动到下一个单词
  • vim的退出与保存

保存并退出不保存并退出
:wq+回车键Esc+q!
Esc+Shift+zz

1322987-20180928201103696-1068841259.png

有关gcc

  • 明白编译过程
文本类型作何处理所用的gcc指令(当前文件类型指向待生成类型
hello.c源程序预处理(cpp)gcc -E hello.c -o hello.i
hello.i修改过的源程序编译处理(ccl)gcc -S hello.i -o hello.s
hello.s汇编程序汇编处理(as)gcc -c hello.s -o hello.o
hello.o可重定位的二进制目标程序链接(ld)

最终得到可执行的二进制目标程序hello

具体题目操作

题目一:vi

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

操作前准备:

  • 将头文件放在如下地址:
    1322987-20180928201231121-243890147.png

  • 文件脉络图:
    1322987-20180928201755307-167788598.png

  • .c文件放在src

    具体操作:

    键入的指令:gcc -I/home/tx20165221/gcc.include

选择生成静态库

键入指令运行结果
gcc -c -I/home/tx20165221/gcc.include add.c sub.c mul.c div.c生成.o文件
ar rcvs libmath.a add.o sub.o mul.o div.o生成静态库
gcc main.c -omain -I/home/tx20165221/gcc.include -L. -lmath生成可执行文件main
./main运行文件

运行结果截图

1322987-20180928201935488-498934136.png

遇到的问题

  • 问题一:找不到头文件的位置
  • 问题一解决办法:在后台找到头文件,右键查看其属性

  • 问题二:编译运行失败
  • 问题而解决方法:输入指令 gcc main.c -omain -I/home/tx20165221/gcc.include -L. -lmath漏掉了了L后的.

题目二:gcc测试

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

1322987-20180928200017601-565362169.png

具体操作

文本类型作何处理所用的gcc指令(当前文件类型指向待生成类型
hello.c源程序预处理(cpp)gcc -E main.c -o main.i
main.i修改过的源程序编译处理(ccl)gcc -S main.i -o main.s
main.s汇编程序汇编处理(as)gcc -c main.s -o main.o
main.o可重定位的二进制目标程序链接(ld)

键入./main运行

运行结果截图:

  • .o文件

1322987-20180928202011516-905727365.png

  • 最终运行截图1322987-20180928202044226-2108589849.png

题目三:gdb测试

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

      具体操作:

      设置断点
  • 函数:b 文件名.c:函数名
  • 行:b 行数
  • 条件:b 行数 if 表达式(例如:b 9 if == 12)
  • 临时:tb [文件名:]行号或函数名 <条件表达式>

实践过程

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

    运行截图:

    1322987-20180928202106047-1199774802.png

1322987-20180928202117366-932170698.png

题目四:静态库的测试

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

实践过程

  • ar cr math.a add.o sub.o mul.o div.o
  • gcc main.c ./math.a -o main

运行截图:

1322987-20180928202430807-835002603.png

题目五:共享库

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

具体操作

共享库的生成:

  • 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

运行截图:

1322987-20180928202525012-2054750481.png

题目六:Makefile

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

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

    具体操作

    makefile文件编写规则:
  • 目标文件 :由make创建,通常是目标文件或可执行文件

  • 依赖文件 :创建目标体所依赖的文件

  • 运行命令 :创建每个目标体时需要的运行命令,必须以tab键开头,格式为:目标文件:依赖文件列表 [tab键]各目标体运行命令(注意不是空格)

  • 使用make的格式:make目标文件

实际操作:
  • 入vim Makefile,输入i进入编辑模式,输入代码并保存
  • 输入 make, 进行自动化编译
  • 执行 ./testmymath 查看结果
  • 运行结果和编写的makefile截图:

    1322987-20180928202550106-925637590.png

代码统计

  • 上学期的statistics.sh被自己删了,在网上查找代码统计方法,键入sudo apt-get install cloc下载安装,即可。

1322987-20180928202615682-234650204.png

转载于:https://www.cnblogs.com/0630tx/p/9692235.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

itext5固定段落Paragraph,指定段落位置

前几期分析了怎么用itext生成pdf&#xff0c;有兴趣的可以去看看。 1&#xff0c;java使用itext生成pdf&#xff0c;超简单教学&#xff0c;有手就行 2&#xff0c;java使用itext填充pdf模板&#xff0c;超简单教学&#xff0c;有手就行 然后现在有了新的需求&#xff0c;需…

wordcount C

Gitee 代码链接&#xff1a;https://gitee.com/huangxue1111/codes/12rfs3ztj5ga8ymce7qi910 #include<stdio.h>#include<stdlib.h>#include<string.h>#include<windows.h>#define IN 1#define OUT 0void main() {FILE *fp;int length;fp fopen("…

PS中如何使用通道计算来进行美白

打开本机的Photoshow&#xff0c;把要美白的图片添加进来。 通过快捷键ctrlj 创建一个图层副本。 然后选择通道中的蓝色&#xff0c;复制通道&#xff0c;这里说明一下为什么要选择蓝色&#xff1a;因为蓝色和绿色是较暗的&#xff0c;把暗的选出来&#xff0c;目的是为了更…

Eclipse中导入Java项目出现“No projects are found to import”

如图所示&#xff1a; &#xff0c; 这其实是你的项目中缺少了两个文件&#xff1a;.classpath文件和 .project文件 所以eclipse找不到你的项目了。 解决办法&#xff1a; 在你的Eclipse中再新建一个新的项目&#xff0c;项目的类型和项目名和你想要导入的项目名一样&am…

为什么tomcat在eclipse中启动了,访问不了

tomcat在eclipse中启动不了&#xff0c;有很多中情况。 我把这些可能出现的情况总结了起来&#xff1a; 原因1&#xff1a; 项目的发布目录没有在tomcat下的webapps文件下&#xff0c;导致项目启动不了。 解决&#xff1a;先把tomcat中的服务remove出来 然后双击test1服务…

jsp页面中出现“String cannot be resolved to a type”

右键你的项目&#xff0c;Build Path–>Configure Build Path 按照步骤1–>2 –>3。 然后就大功告成了。

1. 冒泡与选择排序及其比较

冒泡排序 1. 思想 冒泡排序&#xff08;Bubble Sort&#xff09;是一种交换排序&#xff0c;基本思路是&#xff1a;两两比较相邻记录的关键字&#xff0c;如果反序则交换&#xff0c;直到没有反序的记录为止。 2. 实现 2.1 初学常用的一种 public static <T extends Compar…

photoshop切图

1.传统切图 &#xff08;1&#xff09;打开一个psd文件&#xff0c;选择ps左边菜单栏的裁剪工具&#xff0c;选择切片工具。首先我们对这个psd文件进行分析&#xff0c;有意识的将其划分成几个选区&#xff0c;然后通过鼠标的拖拽用切片工具将我们所需要的图案切下来&#xff0…

怎么在cmd中进入D盘下的文件夹

从cmd中进入D盘&#xff0c;在光标处输入“d:”(大小写都可以)&#xff0c;按enter进入。 进入D盘根目录后&#xff0c;如果想找到work文件夹可以在光标处输入“cd work”即可。

linux文件管理 - 系统目录结构

几乎所有的计算机操作系统都是用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件, 而在子目录中又会进一步存放子目录和文件&#xff0c;以此类推形成一个树状的文件结构&#xff0c;由于其结构很像一棵树的分支, 所以该结构又被称为“目录树”。 Linux系统中也沿…

BRVAH(让RecyclerView变得更高效)(1)

本文来自网易云社区作者&#xff1a;吴思博对于RecyclerView&#xff0c; 我们重复编写着那一个又一个的列表界面&#xff0c;有的要分组&#xff0c;有的要添加广告头部、有的要不同类型item排列、等等需求&#xff0c;主要代码有大部分是重复的&#xff0c;如果有一个框架能够…

PyQt5菜单添加+事件+状态栏-7

1 from PyQt5.QtWidgets import QApplication,QMainWindow,QAction2 from PyQt5.QtGui import QIcon3 #demo_7:菜单添加action以及状态栏显示消息4 import sys5 class Example(QMainWindow):6 def __init__(self):7 self.app QApplication(sys.argv)8 sup…

git命令图片

转载于:https://www.cnblogs.com/duanwandao/p/9734074.html

解题: SDOI 2011 染色

题面 强行把序列问题通过树剖套在树上。。。算了算是回顾了一下树剖的思想。 每次树上跳的时候注意跳的同时维护当前拼出来的左右两条链的靠上的端点&#xff0c;然后拼起来的时候讨论一下拼接点&#xff0c;最后一下左右两边的端点都要考虑 1 #include<cstdio>2 #includ…

java.lang.OutOfMemoryError: PermGen space

使用Tomcat报java.lang.OutOfMemoryError: PermGen space错误时&#xff0c;这是tomcat的内存不够的原因&#xff0c;也就是tomcat的内存溢出。 这是我们只要在tomcat的配置下添加服务内存就可以了&#xff0c;添加内存方法&#xff0c;只要加入 -Xms256M -Xmx512M -XX:PermS…

怎么把jad反编译放到Eclipse中

可以在CSDN下载页上进行下载哦&#xff0c;免费的哦&#xff0c;不要积分。 http://download.csdn.net/detail/farxix/9838195 我们把下载下来的jad资源包解压出来&#xff0c;如下图&#xff1a; 首先&#xff1a; 然后&#xff1a; 打开eclipse进行设置&#xff0…

一些很有意思的JS现象

关于JS对象的 . 和 [] []除了属性名可以比 .天马行空以外(比如我们要添加一个为33-abc的属性&#xff0c;一定得用[]))&#xff0c;还有一个实际操作中的区别 Object.is的作用和两个奇特的现象 还记得isNaN的作用&#xff0c;但有时候我们就想直接比较两个数据&#xff0c;总不…

怎么查看eclipse的版本号

在电脑上找到你安装eclipse的路径&#xff0c;找到readme点击打开&#xff0c;如下图所示&#xff1a; 查看版本号&#xff1a;

Vue2.0 脚手架代码详解

参考作者&#xff1a;https://www.jianshu.com/p/2b661d01eaf8 只是为了方便个人学习。 来看一下脚手架创建后的项目目录 说明&#xff1a;在*.vue文件&#xff0c;template标签里写html代码&#xff0c;且template直接子级只能有一个标签。style标签里写样式&#xff0c;scrip…

如何使用多个端口访问tomcat

查端口号是否被占用 在cmd中使用 netstat -ano 命令&#xff1b; 处理端口号使用命令 taskkill /pid 1234 ( 8080指的是端口号对应的PID 号 ) 在使用tomcat服务器做为开发使用时&#xff0c;如果我们有多个项目要发布、启动时怎么办呢&#xff0c;在一个tomcat下添加多个项目…