实验报告vi的使用和gccgdb的使用
Linux的VI,GCC,GDB,Makefile等简单应用
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
等价于
hello:main.o func1.o func2.o
gcc $^ -o $@
&&&&&&&&&&&&&&&&&&&&&【杂项】&&&&&&&&&&&&&&&&&&&&&
-->".PHONY"将"clean"目标声明为伪目标
&&&&&&&&&&&&&&&&&&&&&【添加变量】&&&&&&&&&&&&&&&&&&&&&
例:
hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
若采用变量,则:
x. -Wall 生成所有警告信息
xi. -w 不生成任何警告信息 例如:gcc -w hello.c -o hello
2020-Linux文版-实验3-Vi编辑器的使用及C编程-学生实验报告模板-P
实验报告课程名称: Linux操作系统实验名称:实验3 Vi编辑器的使用及C编程学生姓名:孙文浩班级计算机 141 学号学院(系):信息数理学院指导教师:庄丽华实验时间: 2016 年 9 月 30 日实验成绩:实验3 Vi编辑器的使用及C编程一、实验要求(1)掌握Vi的三种运行模式及切换方法;(2)掌握使用Vi的各种操作命令进行文本文件的编辑;(3)用Vi编写Linux下C程序,掌握gcc编译。
二、实验内容和实验步骤1、vi编辑器的使用【操作要求1】首先用合法用户名登陆系统,不保存直接退出。
【操作步骤】(1)在系统提示符下,输入vi,按回车键,进入vi的界面。
(2)输入:q!不保存直接退出。
【操作要求2】新建文件f1并编辑一段文字进行保存。
【操作步骤】(1)在系统提示符下输入vi f1,按回车键。
(2)看到vi的界面,输入i,左下角会出现“插入”。
(3)输入一段文字。
10 Basic Linux Networking and Monitoring Commands You Should KnowI have listed down 10 basic Linux networking and monitoring commands which eachLinux user should know. These Linux basic networking and monitoring commands like hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool are used for viewing the IP address of the Linux server, managing Linux server network adapter configuration, making network connections among Linux servers over telnet andethernet, Linux server information etc. Lets have a look on the following Linux networking and monitoring commands.(4)按Esc键,进入命令模式。
Linu 系统编程实验gccgdb的使用以及Makefile文件的编写
实验二:gcc、gdb、Makefile的使用●实验目的:(一)学会使用gcc编译器(二)学会gdb调试器的使用(三)学会编写Makefile●实验要求:(一)编写一应用程序,使用gcc进行编译,并分别使用-o,-g,-static,-O2等选项(二)编写一应用程序,使用gdb调试,调试中使用到该小节所介绍的所有命令(三)实现一应用程序,该程序有两个c文件构成,使用makefile来完成对该程序的编译●实验器材:软件:安装了Linux的vmware虚拟机硬件:PC机一台●实验步骤:(一)gcc编译器1、先用vi编辑hello.c文件,内容如下:2、gcc指令的一般格式为:gcc [选项] 要编译的文件 [选项] [目标文件]例:使用gcc编译命令,编译hello.c生成可执行文件hello,并运行hello上面的命令一步由.c文件生成了可执行文件,将gcc的四个编译流程:预处理、编译、汇编、连接一步完成,下面将介绍四个流程分别做了什么工作3、-E选项的作用:只进行预处理,不做其他处理。
例:只对hello.c文件进行预处理,生成文件hello.i,并查看通过查看可以看到头文件包含部分代码#include <stdio.h>经过预处理阶段之后,编译器已将stdio.h的内容贴了进来。
4、-S选项的使用-S选项的作用:只是编译不汇编,生成汇编代码例:将hello.i文件只进行编译而不进行汇编,生成汇编代码hello.s5、-c选项的使用-c选项的作用:只是编译不连接,生成目标文件.o例:将汇编代码hello.s只编译不链接成hello.o文件6、将编译好的hello.o链接库,生成可执行文件hello7、-static选项的使用-static选项的作用:链接静态库例:比较hello.c连接动态库生成的可执行文件hello和链接静态库生成的可执行文件hello1的大小可以看到静态链接库的可执行文件hello1比动态链接库的可执行文件hello要大的多,他们的执行效果是一样的8、-g选项的使用-g选项的作用:在可执行程序中包含标准调试信息例:将hello.c编译成包含标准调试信息的可执行文件hello2带有标准调试信息的可执行文件可以使用gdb调试器进行调试,以便找出逻辑错误9、-O2选项的使用-O2选项的作用:完成程序的优化工作例:将hello.c用O2优化选项编译成可执行文件hello3,和正常编译产生的可执行文件hello进行比较(二)gdb调试器1、先用vi编辑文件test.c用于gdb调试器调试,内容如下#include <stdio.h>int main(void){int sum(int sum);int i,result=0;sum(100);for(i=1;i<=100;i++){result+=i;}printf("The sum in main function is %d\n",result);return 0;}int sum(int num){int i,n=0;for(i=0;i<=num;i++){n+=i;}printf("The sum in sum function is %d\n",n);}2、将test.c文件编译成包含标准调试信息的文件test3、启动gdb进行调试可以看到gdb启动界面中显示了gdb的版本、自由软件等信息,然后进入了有”gdb”开头的命令行界面4、l(list)命令l命令用于查看文件可以看到每行代码面前都有对应的行号,这样方便我们设置断点。
实验二 GCC 及GDB的使用
实验二GCC 及GDB的使用一、实验目的和要求a)掌握VI编译环境。
b)掌握GCC编译命令。
c)掌握多个文件共同编译方法。
d)掌握GDB调试命令。
二、实验内容和原理(可参照课件第五章)a)在VI编辑器里编写简单的“hello,world,I am 13050141XX XXX”,利用GCC编译为可执行文件,执行,观察运行结果。
b)在VI编辑器里编写多个文件(至少两个,其中一个为主程序,一个为需要调用的子程序),为其书写头文件,共同编译为可执行文件,执行,观察运行结果。
学习书写MAKEFILE文件,编译,执行,观察结果。
c)编写循环结构的程序,利用GCC 编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。
三、实验环境a)硬件:PC机b)软件:LINUX操作系统、虚拟机四、实验步骤vi hello.c i:C语言编程Esc :wq gcc hello.c gdb file a.out run a实验三交叉编译环境配置一、实验目的和要求熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。
使用Linux 的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。
二、实验内容a)配置网络,包括配置IP 地址、NFS 服务、防火墙。
b)安装交叉编译器c)配置超级终端,下载文件到目标机上。
三、实验设备及工具(包括软件调试工具)硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:REDHAT LINUX 9.0+超级终端+ARM-LINUX 开发环境四、实验步骤(所有的内容截图)1、虚拟机设置为桥接模式。
2、配置IP地址,设置为192.168.0.xxx参照实验指导书图1.4.1-1.4.3. 自己截图,说明3、关闭防火墙,参照实验指导书图1.4.4自己截图,说明4、打开桌面超级终端(HyperTerminal),配置COM1,115200波特率,8N1,实验箱插上电源线,网线与主机相连,串口线与主机串口1相连,开机,看bootloader程序VIVI是否自动加载,回车后进入命令提示符。
实验二 Linux常用命令和vi,gdb的使用
实验二Linux常用命令和vi,gdb的使用【实验内容】本课程要求学员对Linux基本操作命令有一定了解和掌握。
下面列出的一些常用命令作为参考。
最好针对每一个都能亲自练习、掌握。
【实验平台】PC机【实验步骤】1.ls 命令----------------------------------------------------------------------ls 以默认方式显示当前目录文件列表ls –a 显示所有文件包括隐藏文件ls –l 显示文件属性,包括大小,日期,符号连接,是否可读写及是否可执行----------------------------------------------------------------------2.cd 命令cd dir 切换到当前目录下的dir目录cd .. 切换到到上一级目录cd ~ 切换到用户目录,比如是root用户,则切换到/root下----------------------------------------------------------------------3.rm 命令rm file 删除某一个文件rm -rf dir 删除当前目录下叫dir的整个目录----------------------------------------------------------------------4.cp 命令cp source target 将文件source 复制为targetcp –av soure_dir target_dir 将整个目录复制,两目录完全一样cp –fr source_dir target_dir 将整个目录复制,并且是以非链接方式复制,当source目录带有符号链接时,两个目录不相同----------------------------------------------------------------------5.mv命令mv source target 将文件或者目录source更名为target----------------------------------------------------------------------6.diff命令diff dir1 dir2 比较目录1与目录2的文件列表是否相同,但不比较文件的实际内容,不同则列出diff file1 file2 比较文件1与文件2的内容是否相同,如果是文本格式的文件,则将不相同的内容显示,如果是二进制代码则只表示两个文件是不同的----------------------------------------------------------------------7.echo 命令echo message 显示一串字符8。
实验3 vi工具的使用
实验3 利用vi编辑器运行C语言程序一、实验要求熟悉并掌握vi三种工作模式之间的转换方法。
掌握新建和保存文件,进行文本插入与删除的操作方法。
掌握编辑并运行C语言程序的方法。
二、实验内容C语言运行时需要gcc编译器,提供了C,C++,JAVA等库函数。
1 查看gcc编译器是否安装[root@localhost ~]# which gcc //如果提示/usr/bin/gcc说明已经安装,否则就没有安装2 安装gcc编译器方法(一):利用yum安装配置yum源[root@localhost ~]#cd /etc/yum.repos.d[root@localhostyum.repos.d]# ll总用量8-rw-r--r--. 1 root root 125 4月7 21:58 packagekit-media.repo-rw-r--r--. 1 root root 529 5月31 2012 rhel-source.repo[root@localhostyum.repos.d]# vi rhel-source.repo //将该文件修改如下在末行模式下保存并退出:wq[root@localhostyum.repos.d]#cd ~[root@localhost~]#mount /dev/sr0 /mnt[root@localhost~]#cd /mnt/Packages[root@localhostPackages]# yum install gcc* //安装系统提供的全部语言的工具包[root@localhostPackages]#cd ~3 vi编辑hello.c并用gcc编译运行[root@localhost ~]# vi hello.c //如果该文件存在,则进入该文件,否则,创建后进入在末行模式下保存并退出:wq4 vi的插入模式与末行模式(1)插入模式,编辑文件:按A在行尾后补;按a在当前字符处的下一个位置;按o在当前行的下面插入一个新行;按O在当前行的上面插入一个新行;按$快速移动到行尾(2)末行模式,保存、退出Vim:按: 键可以进入Ex,屏幕状态行上有一个:标志;按w保存文件;按wq保存退出;按q!强制不保存退出;按wq! 强制保存退出;按x 保存退出;(3)使用命令模式光标移动:按字符移动:方向键按一下移动一个字符;数字,方向移动:向这[个方向移动1个字数倍个;按单词移动:w、b按句子移动:)、(按段落移动:}、{跳到第几行:XG,X是行数建议大家用:行数Ctrl-f向前、向下翻页Ctrl-b向后、向上翻页G移至文档结尾;gg移至文档首删除内容:x 刪除光标所在处字符,在中文指一個中文字。
实验一 gcc和gdb的使用
3.执行当前目录下编译生成的可执行文件,使 用以下格式: ./可执行文件名 ./a.out
也可以使用以下方法编译源代码文件.生成自 命名的可执行文件; gcc源文件-o自命名的文件名 例如:gcc test.c –o test
4.gdb简介 Linux包含了一个叫gdb的GNU调试程序。gdb是一个 用来调试c和c十十程序的强力调试器。它使用户能在 程序运行时观察程序的内部结构和内存的使用情况。 以下是gdb所提供的一些功能: 能监视程序中变量的值; ·能设置断点以使程序在指定的代码行上停止执行; ·能一行行地执行代码。
在命令行上键入gdb并按回车键就可以运行gdb 了, 如果一切正常的话,gdb将被启动,并且将 在屏幕上显示类似的内容:
实验内容 将下面的程序输入到一个文件名字为 test.c的磁盘文件中,利用调试程序找出 其中的错误,修改后存盘。该程序的功 能是显示一个简单的问候语,然后用反 序方式将它列出。
实பைடு நூலகம்一 gcc和gdb的使用
实验目的 1.掌握Linux操作系统下最常用的c 语言编译器gcc的使用 2.掌握Linux操作系统下最常用的 代码调试器gdb的使用; 3.掌握调试代码的基本方法,如 观察变量、设置断点等。
gcc简介 gcc 是Linux操作系统下一种常用的c语言编译器。 1.使用文本编辑器编写完源程序,保存成 .c为扩展名的c语言源代码文件。 2.返回到shell界面,使用gcc对源程序进行编泽 其命令为: gcc 源程序 例 : gcc test.c 如果源代码没有语法错误,使用以上命令编译,会在 当前目录下生成一个名为a.out的可执行文件。如果源代码 有语法错误,则不会生成任何文件,gcc编译器会在shell 中提示错误的地点和类型。(可使用gdb来调试)
Linux系统编程实验二:gcc、gdb的使用以及Makefile文件的编写
实验二:gcc 、gdb 、Makefile 的使用实验目的:(一) 学会使用gcc 编译器 (二) 学会gdb 调试器的使用 (三) 学会编写 Makefile实验要求:(一) 编写一应用程序,使用 gcc 进行编译,并分别使用-o ,-g ,-static ,-02等选项 (二) 编写一应用程序,使用 gdb 调试,调试中使用到该小节所介绍的所有命令 (三) 实现一应用程序,该程序有两个 c 文件构成,使用 makefile 来完成对该程序的编译实验器材:软件:安装了 Linux 的vmware 虚拟机 硬件:PC 机一台实验步骤:(一) gcc 编译器1先用vi 编辑hello.c 文件,内容如下:#include <stdio,h>int nain (void ){printfC'hello world\n ,1); return 0;}2、gcc 指令的一般格式为:gcc [选项]要编译的文件[选项][目标文件]例:使用gcc 编译命令,编译 hello.c 生成可执行文件 hello ,并运行hello上面的命令一步由.c 文件生成了可执行文件,将 gcc 的四个编译流程:预处理、编译、汇编、连接一步完成,下面将介绍四个流程分别做了什么工作3、-E 选项的作用:只进行预处理,不做其他处理。
例:只对hello.c 文件进行预处理,生成文件 hello.i ,并查看[root@localhost gcc]# gcc ・E hello.c -o hello.i [root@localhost gcc]# Is hello hello.c hello t i通过查看可以看到头文件包含部分代码 #include <stdio.h>经过预处理阶段之后,编译 器已将stdio.h 的内容贴了进来。
4、-S 选项的使用-S 选项的作用:只是编译不汇编,生成汇编代码 例:将hello.i 文件只进行编译而不进行汇编,生成汇编代码 hello.s[root (alocalhost gcc]# gcc -S hello,i -o hello ■与[rootfalocalhost gcc]# Is lello hello.c hello.i hello.s [root (3localhost[root@localhost gcc]# [root@localhost gcc]# [root@localhost gcc]# hello world [root@lo 匚alhost gcc]# vi hello^c gcc hello.c -o hello ■/hellogcc]# |5、-c选项的使用-c 选项的作用:只是编译不连接,生成目标文件 .0 例:将汇编代码hello.s 只编译不链接成 hello.o 文件[rootfalocalhost gcc]# gcc -c hello.5 -o hello.o [rootfalocalhost gcc]# Ishello hello.c hello.i hello.o hello ・56、将编译好的hello.o 链接库,生成可执行文件 hello[roottalocalhost gcc]# [root@localho5t gcc]# hello hello,c hello [root (alocalhost gcc]#hello world gcc hello.o -o hello Is i hello.o hello.s• /hello 7、-static 选项的使用-static 选项的作用:链接静态库例:比较hello.c 连接动态库生成的可执行文件hellol 的大小hello 和链接静态库生成的可执行文件gcc]# gcc hello.c g 匚c]# gcc -stati 匚 gcc]# 11 -o hello hello ■匚-o hellol -rwxr- xr-x 1 root root 4641 J un -rwxr- xr-x 1 root root 605990 J un -rw- r- ._ p _ 1 root root 75 J un -rw- r- 1 root root 18880 J un -rw- r- 1 root root844 J un -rw - r-1 root root 416 J un1 03 47 hello 1 03 47 hellol 1 03 15 hello.t 1 03 27 hello.i 1 03 41 hello.o 1 03 35 helloes hellol 比动态链接库的可执行文件 hello 要大的多,他们的执行效果是一样的8、-g 选项的使用-g 选项的作用:在可执行程序中包含标准调试信息例:将hello.c 编译成包含标准调试信息的可执行文件hello2[root@localhost [root@localhost hello hello2 hellol hello.cgcc]# gcc -g hello-c -o hello2 gcc]# Is hello.i hello ・s hello.o带有标准调试信息的可执行文件可以使用gdb 调试器进行调试,以便找出逻辑错误9、-02选项的使用-02选项的作用:完成程序的优化工作例:将hello.c 用02优化选项编译成可执行文件 hello3,和正常编译产生的可执行文件hello 进行比较[rootfdlocalhost [root@localhost [root@localhost total 636可以看到静态链接库的可执行文件gcc]# gcc -02 hello-c gcc]# Ishello.c hellohello.i hello .5 gcc]# ./hello gcc]# ./hello3用于gdb 调试器调试,内容如下 #i nclude <stdio.h> int main( void)2、将test.c 文件编译成包含标准调试信息的文件test[root@localhost gdb]# gcc -g test. [root (alocalhost gdb]# Is test test3、启动gdb 进行调试[root@localhost [root@localhost hello hello2 hellal hello3[root@localhost hello world[rootOlocalhost hello world(二) gdb 调试器1先用vi 编辑文件test.co hello3 -o test[rootglocalhost gdb]# gdb testGNU gdb Red Hat Linux (6.5^25*el5rh)Copyright (匚)2006 Free Software Foundation, Inc .GDB is free software F 匚overed by the GNU General Publi 匚 License t and you 日「Ewelcome to change it and/or distribute copies of it und er certain conditions.Type "show copying" to see the conditions ・There is absolutely no warranty for GDB ・ Type "show wa rranty" for dEtails *This GDB was configured as "1386-redhat-linux*gnu"・・.Us ing host libthreaddb library "/^ib/i686/nosegneg/libth read db ・ so.1” ・ 在gdb 中可以设置多个断点。
实验三_LINUX_下C语言使用、编译及调试实验
实验三:LINUX 下C语言使用、编译与调试实验一、目的:1、练习并掌握Linux提供的vi编辑器来编译C程序2、学会利用gcc、gdb编译、调试C程序3、学会使用make工具二、内容1、编写C语言程序,用gcc编译并观察编译后的结果,运行生成的可执行文件。
2、利用gdb调试程序。
3、学习编写makefile,并进行编译。
三、操作1、文件编辑器vi进入vi,直接执行vi编辑程序。
例:# vi test.c显示器出现vi的编辑窗口,同时vi会将文件复制一份至缓冲区(buffer)。
vi先对缓冲区的文件进行编辑,保留在磁盘中的文件则不变。
编辑完成后,使用者可决定是否要取代原来旧有的文件。
1) vi的工作模式(1)输入模式输入以下命令即可进入vi输入模式:a 在光标之后加入资料A 在该行之末加入资料i 在光标之前加入资料I 在该行之首加入资料o 新增一行于该行之下O 新增一行于该行之上(2)命令模式在输入模式下,按ESC可切换到命令模式。
命令模式下,可选用下列指令离开vi::q! 离开vi,并放弃刚在缓冲区内编辑的内容:wq 将缓冲区内的资料写入磁盘中,并离开viZZ 同wq:x 同wq:w 将缓冲区内的资料写入磁盘中,但并不离开vi:q 离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用(3)命令模式下光标的移动h 左移一个字符j 下移一个字符k 上移一个字符l 右移一个字符0(零)移至该行的行首$ 移至该行的行尾^ 移至该行的第一个字符处H 移至窗口的第一行M 移至窗口中间那一行L 移至窗口的最后一行G 移至该文件的最后一行W, w 下一个单词(W 忽略符号)B, b 上一个单词(B 忽略符号)(4) 命令模式下的编辑命令dd 删除当前光标所在行yy 复制当前光标所在行p 将复制的内容粘贴在光标所在的位置后P 将复制的内容粘贴在光标所在的位置前x 删除当前光标字符X 删除当前光标之前字符u 撤消·重做2、GNU C编译器1) 使用gcc通常后跟一些选项和文件名来使用gcc编译器。
gcc和gdb的基本使用
北京林业大学2012学年—2013学年第二学期 Linux应用实验任务书专业名称:信息管理与信息系统班级:姓名:学号:实验题目:实验四 gcc和gdb的基本使用实验环境: Red Hat Linux 9 实验目的:通过调试一个有问题的程序,进一步熟练使用Vi 操作,而且熟练掌握Gcc 编译及Gdb 的调试命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。
实验内容:Gdb调试题目:(1)使用Vi 编辑器,将以下代码输入到名为greet.c 的文件中。
此代码的原意为输出倒序main函数中定义的字符串,但结果显示没有输出。
代码如下所示:(2)使用Gcc 编译这段代码。
(3)运行生成的可执行文件,观察运行结果。
(4)使用Gdb 调试程序,通过设置断点、单步跟踪,一步步找出错误所在。
(5)纠正错误,更改源程序并得到正确的结果。
实验步骤:(1)在工作目录上新建文件greet.c,并用Vi 启动:vi greet.c。
(2)在Vi 中输入以上代码。
(3)在Vi 中保存并退出:wq。
(4)用Gcc 编译:(5)运行greet:./greet,输出为:可见,该程序没有能够倒序输出(6)启动Gdb 调试:(7)查看源代码并进行调试。
使用list查看源代码:将原来有错的程序经过Gdb调试,找出问题所在,并修改源代码,输出正确的倒序显示字符串的结果。
实验步骤中请适当截图。
GNU调试器是一个功能非常强大的工具。
要了解更加详尽的知识,建议阅读GNU调试器手册。
在执行完for循环后设置一个断点,以便查看是否在赋值时出了问题设置完断点后运行,到断点设置处停止:发现的问题:查看赋值后string2中的数据,发现string2【0】被赋值了字符串的结尾标志“\0”,因此,在后面执行printf 输出时,由于第一个字符就是结束标志,因此,不会输出后面倒序的字符串,而产生上述结果:删除所有断点后,改正源代码,运行:代码改正:将每个元素向前移一位,将原来string2【0】中的‘\0’放到最后即可。
网络安全实验报告-
计算机网络安全与管理实验报告实验一Linux系统学习与使用实验目的:1.熟练使用Linux系统的基本命令、相关文件操作、基本系统配置、网络配置等。
2.熟练并掌握Linux下的编程工具vi、gcc、gdb等。
实验内容1.Linux系统的安装。
2.根据命令查询手册,熟悉Linux下常用命令。
3.熟悉最基本的程序设计环境,熟悉并掌握vi,gcc,gdb等工具的使用。
实验过程与步骤实验过程与步骤1.系统的安装a.我已经在自己的主机上面安装了vm虚拟机,下来只用在vm中创建虚拟硬盘,安装ubuntu 系统。
开始进行ubuntu的安装:安装完毕,进入登陆界面:Mkdir命令,在当前目录下建立一个文件夹:Ls显示当前目录下的所有文件(夹):cd进入对应目录,如#cd/usr/src再如#cd..等,这个命令和windows下的差不多pwd显示当前路径如#pwdGcc对c文件进行编译:rm删除文件或文件目录,如#rm/root/a.txt或#rm–f/root/a.txt:3.熟悉最基本的程序设计环境使用vi输入如下程序,了解C程序的基本架构与流程,之后用gcc工具编译程序,并运行,然后再用gdb调试程序。
首先使用vi指令建立test.c文件:在文本中编写如下c程序:然后gdb test.c:在命令行上键入gdb并按回车键就可以运行gdb了。
实验二nmap、tcpdump、sniffer等工具的使用实验目的:1.练习用nmap来进行一些实际的扫描过程。
2.在已经熟练使用Linux系统的基础上学习使用tcpdump抓包工具。
3.掌握Sniffer的原理和使用技巧。
实验内容1.学会如何安装nmap、tcpump、sniffer等工具的安装与使用。
2.利用nmap进行一台计算机的扫描。
3.进行sniffer进行抓包操作并做分析。
实验过程与步骤:1.Nmap扫描:扫描了宿舍一个同学的电脑,得到信息如下:分析其中一部分端口:23:telnet端口;2121:可能为ftp端口;808:CProxy的http代理端口2.Sniffer抓包:使用windows7的telnet客户端登陆bbs,过滤包后得到下面的结果:图1:用户名的发送过程图2:密码的发送过程(图中用小黑方块覆盖的部分)实验三漏洞攻击实验实验目的:1.学习AT&T汇编的基本语法,回顾intel汇编语言并与AT&T汇编语言比较2.熟练掌握gdb的使用方法3.重点学习缓冲区溢出攻击的原理4.理解linux/windows系统下的堆栈溢出原理5.了解shellcode的构造方法6.通过实例了解SQL注入原理及实现实验内容及步骤:1.缓冲区溢出因使用Ubuntu9.04做实验,gcc4.3版本防止了缓冲区溢出,因此下载了gcc-3.4进行试验。
实验二、Vi文本编辑器和GCC编译器的使用
实验二、Vi文本编辑器和GCC编译器的使用实验二、Vi文本编辑器和GCC编译器的使用一、实验目的:1、掌握Linux系统终端方式使用的编辑器vi;2、学习vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。
3、掌握GCC编译器的使用。
二、实验内容:1、用Vi文本编辑器对你的计算机进行网络配置。
网络配置文件有:文件1:/etc/sysconfig/network;文件2:/etc/sysconfig/network-scripts/ifcfg-eth0;文件3:/etc/resolv.conf;要求:在图形界面下配置,看相应配置文件有没有被修改;修改配置文件看图形界面是否被修改。
2、将显示器配置文件(自己查),复制到//home目录下(一定要复制,对副本进行操作,否则出现异常后果自负),并重命名为i.打开i文件,设置行标,将第89行至第96行的内容复制到第116行,并将第62行至第86行的Option替换为type.并将整篇文章中的Section 替换成choose.将修改后的文件另存为j.并将j复制到/usr目录下,并重命名为k.3、在vi中编写一个abc.c程序,对程序进行编译、连接、运行。
具体如下: [student@enjoy abc]$ vi abc.cmain(){int i,sum=0;for(i=0;i<=100;i++){sum=sum+i;}printf("\n1+2+3+...+99+100=%d\n",sum);}[student@enjoy abc]$ gcc -o abc abc.c[student@enjoy abc]$ lsabc abc.c[student@enjoy abc]$ ./abc1+2+3+...+99+100=5050[student@enjoy abc]$[student@enjoy abc]$4、从如上内容的基础上总结vi的启动、存盘、文本输入、现有文件的打开、光标移动、复制/剪贴、查找/替换等命令。
实验三基本开发工具的使用
实验三基本开发工具的使用实验三基本开发工具的使用(1)一.实验目的1.复习vi编辑器的使用2.掌握gcc编译器的使用。
3.掌握gdb调试器的使用。
4.掌握make工具的使用。
二.实验内容1.使用vi编辑器完成以下4个文件的内容输入:[操作步骤](1)在/home目录下创建experiment3子目录,其命令:cd /home (enter) mkdir experiment3 。
(2)在该目录下,创建以下四个文件,文件名:hello.h、starfun.h、hello.c、star.c, 其命令是:geidt hello.h gedit starfun.h gedit hello.c gedit star.c 。
(3)使用vi编辑器分别输入以下内容,如图1、图2所示:图1 使用gedit编辑以下内容图2 使用gedit所建立的4个文件A. starfun.h 文件内容如下:/*****starfun.h*****/#ifndef STARFUN_H#define STARFUN_H#define NUM 4#define NUMBER 3int star1() {int i,j,k;for(k=1;k<=NUM;++k) {for(i=1;i<=(NUM-k);++i) printf(" ");for(j=1;j<=(2*k-1);++j)printf("*");printf("\");}return 0;}int star2() {int i,j,k;for(k=NUMBER;k>=0;--k) {for(i=1;i<=(NUMBER-k+1);++i) printf(" ");for(j=1;j<=(2*k-1);++j)printf("*");printf("\");}return 0;}#endifB. hello.h文件内容如下:/*hello.h*/#ifndef HELLO_H#define HELLO_Hvoid hello() {star1();printf("hello,my friends\");}#endifC. hello.c 文件内容如下:void showhello() {hello();}D. star.c文件内容如下:#include "starfun.h"#include "hello.h"#includeint main() {star1();star2();showhello();return 0;}2.使用gcc编译器,编译程序[操作步骤](1)第一种方法:分步进行A.由star.c starfun.h 文件生成star.o 目标文件:gcc -c star.c -o star.oB.由hello.c hello.h starfun.h生成hello.o目标文件gcc -c hello.c -o hello.oC.由hello.o star.o 生成应用程序myproggcc star.o hello.o -o myprogD.执行应用程序myprog[root@localhost 01_hello]# ./myprog执行情况如下图图3所示:图3 使用gcc编译器,编译程序(2) 一条命令完成以上操作:A.执行清屏命令:clearB.输入命令生成可执行程序myprog :gcc star.c hello.c -o myprogC.执行程序myprog,其命令是:./myprog3.常见选项的应用(1)写出-Wll选项的作用:允许发出gcc提供的所有有用的报警信息。
Vi and GCC用法
D) 保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来。
E) 离开vi
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
作用:将汇编输出文件test.s编译输出test.o文件。
6. 无选项链接
用法:#gcc test.o -o test
作用:将编译输出文件test.o链接成最终可执行文件test。
7. 选项-O
用法:#gcc -O1 test.c -o test
作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。
9). 跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
4、Last line mode下命令简介
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。
以上两种方法相比较,第一中方法编译时需要所有文件重新编译,而第二种方法可以只重新编译修改的文件,未修改的文件不用重新编译。
:%s#/usr/bin#/bin#g 将/usr/bin替换为/bin
7). 回复上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
8). 更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
操作系统VI和GCC用法
2.使用c d命令相对切换目录路径 2.使用c d命令相对切换目录路径 使用 根据当前所处的位置和想去的地方,可以通过几 根据当前所处的位置和想去的地方, 种不同的方法相对地切换目录路径。 种不同的方法相对地切换目录路径。如果只是想移动 到目录结构的上一级去,可以输入“cd..”命令 命令。 到目录结构的上一级去,可以输入“cd.. 命令。举 例来说,这个命令可以把你从目录/var/spool带到目 例来说,这个命令可以把你从目录/var/spool带到目 var中去 更进一步地说,输入“ ../..”命令 中去。 录/var中去。更进一步地说,输入“cd ../.. 命令 将把你从目录/var/spool带到根目录 带到根目录“ 中去。 将把你从目录/var/spool带到根目录“/”中去。因 为在根目录上没有更高一级的目录结构了, 为在根目录上没有更高一级的目录结构了,所以在目 /spool中输入 cd../../..”命令还是把你从 中输入“ 录/var /spool中输入“cd../../.. 命令还是把你从 目录/ /spool带到根目录而已 带到根目录而已。 ..” 目录/var /spool带到根目录而已。“..”是一个指 向自身的目录索引。 向自身的目录索引。
Operating System Concepts 2.5
三、vi文本编辑器程序
i编辑器是一个小巧但功能强大的程序 编辑器是一个小巧但功能强大的程序。 v i编辑器是一个小巧但功能强大的程序。许多人 在最初的时候认为它很难用, 在最初的时候认为它很难用,因为它的编辑命令都是 用一两个字母来表示的;但是只要你习惯了使用vi 用一两个字母来表示的;但是只要你习惯了使用vi 使用它进行编辑工作也会十分迅速。 ,使用它进行编辑工作也会十分迅速。其原因在于这 个编辑器只是一个非常短小的程序, 个编辑器只是一个非常短小的程序,因此它只需要使 用很少的内存;同时其编辑命令很简短, 用很少的内存;同时其编辑命令很简短,又都可以通 过键盘快速输入, 过键盘快速输入,所以基本上用不着在键盘和鼠标之 间来回切换。 间来回切换。
实验二 Vi编辑器的使用
实验二Vi编辑器的使用
实验目的
1、理解vi编辑器的三种操作状态
1)命令行模式:控制屏幕光标的移动,字符或光标的删除,移动复制某区段及进入插入模式,或者到最后行模式。
2)插入模式:此模式下,才能进行文字输入,按Esc可回到命令模式
3)最后行模式:将储存或离开编辑器,也可设置编辑环境。
如寻找字符串、列出行号等。
2、熟练掌握vi编辑器的基本操作。
3、掌握常用最后行下的指令。
小组成员:师伟韬13050012
郑族13050019
黎鹏弟13050027
一、实验内容
1、 vi编辑器的启动。
截图:
截图示例
光标的移动
复制
删除:
Set nu
跳到文章的某一行
搜索字母 l
替换:
3、最后行下的指令练习。
4、利用vi编辑器完成按要求对文档f2的操作。
二、实验心得
组员都很高兴对Linux系统的vi 编辑器有了初步了解。
实验过程还比较顺利,大家理解得都不错。
实验八GCC与GDB
实验八GCC 与GDB一、实验目的(1)熟悉gcc 使用方法(2)熟悉gdb 断点设置二、实验过程(1) 使用gccA :使用vi 创建hello.c 源文件,输入vi hello.c 回车B :输入如图8-3代码C :使用gcc 编译源文件生成可执行文件hello ,输入gcc hello.c -o hello 回车 D:执行文件,输入./hello 回车 (2) 使用gdbA:使用vi创建test.c源文件,输入vi test.c回车B:输入如图8-4代码D:启动gdb,输入gdb回车E:打开test文件,输入file test回车D:显示代码,输入list回车,如图8-5E :在第五行设置断点,输入break 5回车,此时设置了断点1F :运行,输入run 回车,此时程序停止在断点1处,如图8-6所示G :打印h 的值,输入print h 回车H :清除所有断点,输入delete breakpoint 回车,然后输入y I :继续运行程序,输入continue 回车,如图8-7所示J :退出gdb ,输入quit 回车练习:编辑sum.cxx#include <iostream>using namespace std;int main() { //计算a+bint a,b,sum;cout<<"Input a:\n";cin>>a;cout<<"Input b:\n";cin>>b;sum=a+b;cout<<"a+b="<<sum<<endl;return 0;}编译:g++ sum.cxx -o a.out运行:./a.out。
linux实验报告vi编辑器的使用
一、实验目的学习使用vi编辑器建立、编辑、显示及加工处理文本二、实验内容1.进入和退出vi2.利用文本插入方式建立一个文件3.在新建的文本文件上移动光标位置4。
对文件执行删除、复原、修改、替换等操作三、主要的实验步骤(1)vim简介系统管理员的重要工作就是修改与设定某些重要软件的配置文件,因此至少得要学会一种以上的命令界面文本编辑器。
在所有的Linux distributions 上都会有的一套文字编辑器就是vi,而且很多软件默认的也是使用vi 为他们编辑接口。
vim 是高级版本的vi ,vim 不但可以用不同颜色显示文字内容,还能够进行诸如shell script,C program 等程序的编辑功能。
(2)vi的使用基本上vi 共分为三种模式,分别是“一般模式”、“编辑模式”和“命令模式”。
这三种模式的作用分别是:一般模式:以vi 打开一个文档就直接进入一般模式(这是默认的模式)。
在这个模式中,你可以使用“上下左右”键来移动光标,可以使用“删除字符”或“删除整行”来处理文档内容,也可以使用“复制、粘贴"来处理文件数据。
●编辑模式:在一般模式中可以进行删除、复制、粘贴等操作,但是却无法编辑文件内容!要按下“i,I,o,O,a,A,r, R”等任何一个字母后才会进入编辑模式。
通常在Linux 中,按下这些按键时,在屏幕的左下方会出现“INSERT或REPLACE”字样,此时才可以进行编辑.而如果要回到一般模式时,则必须要按下“Esc"这个按键即可退出编辑模式.●命令模式:在一般模式当中,输入: / ?三个中的任何一个按钮,就可以将光标移动到最底下那一行。
在这个模式当中,可以提供查找数据的操作.读取、保存、大量替换字符、离开vi 、显示行号等的操作是在此模式中完成的!(3)具体的操作步骤如下1、进入vi2、建立一个文件,如file.c 进入插入模式,输入一个C语言程序的各行内容,故意制造几处错误,最后,将文件存盘,回到shell状态下3、运行gcc —o file file。
VI编辑器的使用与Linux操作系统下C语言的使用
VI编辑器的使用与Linux操作系统下C语言的使用一、实验题目Linux操作系统下C语言的使用二、实验课时2课时。
三、实验目的:熟悉Linux操作系统下c语言的使用。
四、实验内容学习Linux环境下gcc的使用;观察进程运行情况和CPU工作情况;五、实验步骤:1、屏幕编辑程序Vi的使用vi是Unix系统中使用最广泛的文件编辑器。
启动vi的方法很简单:直接输入“vi”或直接输入“vi 文件名”命令。
启动vi时,处于命令状态,不能够输入字符,只能输入命令:a:“新增文本”(即Append)命令,执行后将进入输入模式,在当前光标之后新增文本。
I:“插入文本”(即Insert)命令,执行后将进入输入模式,在当前光标位置处新增文本。
d+d:“删除一行”命令。
x:“删除当前字符”命令。
P:“粘贴”命令,将复制的内容粘贴在目前光标所在的位置,若复制内容为整行文字,则会粘贴在光标所在位置的下一行。
:q:“退出vi”命令,不过如果在执行这个命令之前修改过内容,则无法退出。
:q!:“不存盘退出”命令,即是放弃所有的修改,强行退出。
:w:“存盘”命令。
:wq:“存盘退出”命令。
当我们使用“a”或“I”命令进行输入模式后,如果要回到命令模式,只需按一下ESC键即可。
2、Linux环境下的gcc的使用格式:gcc [选项][要编译的源程序文件名]当不用任何选项编译一个程序时,gcc将会生成(假定编译成功)一个名为a.out的可执行文件。
例如:下面的命令将在当前目录下产生一个叫a.out的文件:gcc mytest.c可以用-o编译选项为将产生的可执行文件指定一个文件名来代替 a.out,例如,将一个叫mytest.c的C程序编译为名叫mytest的可执行文件:gcc –o mytest mytest.c注意,当使用-o选项时,-o后面必须跟一个文件名。
例如:显示“hello,test world”的程序test.c如下:#include <stdio.h>int main{ printf(“hello,test world\n”);}在命令行上输入以下命令,编译和运行该程序并观察输出。