操作系统上机随笔《准备篇》

前言

这段时间因为疫情学校封寝等原因,开摆了好久,眼看着离操作系统和数据库上机提交报告截止时间不远了,要开始好好学习,这个帖子算是一个个人随笔。

1,安装配置环境

这是对Red Hat Linux的一个简介链接:

(15条消息) Red Hat Linux简介_weixin_33834679的博客-CSDN博客

这是一个对VMware的简要介绍:

(15条消息) VMware虚拟机是什么?_Lxq0218的博客-CSDN博客_vmware是虚拟机吗

我们就是需要先下载一个VMware,然后在里面开一个需要的Red Hat Linux虚拟机用来做我们操作系统的实验。

首先我们要下载VMware,我是跟着这个帖子做的:

(15条消息) 最新超详细VMware虚拟机下载与安装_隐秀_的博客-CSDN博客_vmware虚拟机

然后我们要新创建一个Red Hat Linux虚拟机,我是跟着这个帖子做的:(跟着这个帖子做,gcc自动就安装好了)

(15条消息) Red Hat Linux 安装教程_清晨-阳光zx的博客-CSDN博客_redhat下载安装教程

这个正常完成是到纯文本界面的,不习惯的弄到图形界面那一步即可

这是一些入门级的linux命令,可以试一试玩一玩:

(15条消息) 入门linux命令行模式基本操作_森籽的博客-CSDN博客_linux命令行模式

2,简单的linux操作

  • 用法: pwd                作用:打印当前路径,注意 显示 / 代表是根目录的意思

  • shutdown -h now   关闭虚拟机

  • 用法 :cd 文件名       作用:切换目录,一般是进入硬盘、文件。后面不跟参数,则返回到了根目录

  • 绝对路径的写法:从根目录开始写, 例如: /root/test/001.c

    相对路径的写法:以当前路径作为参考,同时 . 表示当前路径, ..表示当前路径的上一个路径, 例如:cd .. 回到上一级

  • clear                作用: 清空命令行界面,但是之前的操作依旧存在

  • ls

    用法1:ls 不加路径

    作用: 罗列当前目录下面有哪些文件

    用法2: ls 路径名

    作用: 罗列xxx路径下有哪些文件

    用法3:ls -a (路径名)

    作用:罗列当前目录(xxx路径)下面的文件包括隐藏文件

    用法 ls -l (路径名) (快捷写法 ll)

    作用:以列表的形式显示

               列表下面有rwx三种形式 分别代表(读写可执行),共有三组,分别代表当前用户的权限,当前分组的权限和其他分组的权限。

  • 用法 mkdir 目录名

    作用: 创建一个目录

  • 用法 vi 文件名    作用:创建一个文件

  • 用法: mv 文件名 路径名

    作用: 把文件移到另一个地方

    用法: mv 原文件名 新文件名

    作用: 重命名

  • 用法: cp a b

    作用: 复制a文件,并取之命名为b

    用法 cp-R a b

    作用:如果a下面还有子文件,那么用上述操作才可以完成复制

  • rm 

    用法1: rm 文件名

    作用 删除xxx文件

    用法2: rm -i 文件名

    作用: 提示是否删除xx文件(用 y/n 来确定是否删除)

    用法3: rm -f 文件名

    作用: 强制删除xxx文件

    用法4: rm -r 目录名

    作用:删除目录

    用法5 rm -rf 目录名

    作用: 强制删除目录

  • cat

    用法1: cat > 文件名

    作用:写文件

    用法2:cat 文件名

    作用: 查看文件

    用法3 cat 文件名1 文件名2 > 文件名3

    作用: 拼接文件1 2 并写入3 中

    用法4 cat >> 文件名

    作用,向文件中追加内容,如果用cat>文件名,会覆盖,无法追加

  • more

    用法: more 文件名

    作用: 在查看文件功能上,比cat更好用

    操作: 空格向下翻页,b向上翻页 回车一行行的显示

  • find

        用法1: find 路径 -name"文件名"

        作用: 寻找路径下是否有xxx的文件

        用法2:find 路径 -name"*.cpp" 

        作用:利用通配符寻找路径下满足通配式的所有的文件

       用法3: find ./ -name "内容" -exec rm -rf {} \;

       作用:在根目录中寻找内容,将返回的内容删除

3,gcc编程

gcc最基本的用法是∶gcc [options] [filenames]

其中options是编译器所需要的参数,filenames给出相关的文件名称。

-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。

-lname,在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库。

-Ldir,制定编译的时候,搜索库的路径 ,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找

举个例子:  gcc –lm -L/home/mylib  ts.c –o ts.out

这时,预编译、编译连接ts.c,生成一个指定名称为ts.out的可执行文件,在编译过程中需要引入m库.对于一些标准库来说,我们没有必要指出路径.只要它们在起缺省库的路径下就可以了 , 系统的缺省库的路径/usr/lib      /usr/local/lib     /lib在这三个路径下面的库,我们可以不指定路径

gcc的错误类型及对策

如果源程序中有错误,就无法生成最终的可执行文件。对于gcc给出错误资讯,我们必须逐个进行分析、处理,并修改相应的语言,才能保证源代码的正确编译连接。gcc给出的错误资讯一般可以分为四大类,下面我们分别讨论其产生的原因和对策。

第一类∶C语法错误

错误资讯∶文件source.c中第n行有语法错误(syntax error)。这种类型的错误,一般都是C语言的语法错误,应该仔细检查源代码文件中第n行及该行之前的程序,有时也需要对该文件所包含的头文件进行检查。有些情况下,一个很简单的语法错误,gcc会给出一大堆错误,我们最主要的是要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C语言的基本教材。

第二类∶头文件错误

错误资讯∶找不到头文件head.h(Can not find include file head.h)。这类错误是源代码文件中的包含头文件有问题,可能的原因有头文件名错误、指定的头文件所在目录名错误等,也可能是错误地使用了双引号和尖括号。

第三类∶档案库错误

错误资讯∶连接程序找不到所需的函数库,例如∶         ld: -lm: No such file or directory 这类错误是与目标文件相连接的函数库有错误,可能的原因是函数库名错误、指定的函数库所在目录名称错误等,需要确定档案库及目录的名称并修改程序中及编译选项中的名称。通常我们会在课上给出正确的档案库。

第四类∶未定义符号

错误资讯∶有未定义的符号(Undefined symbol)。这类错误是在连接过程中出现的,可能有两种原因∶一是使用者自己定义的函数或者全局变量所在源代码文件,没有被编译、连接,或者干脆还没有定义,这需要使用者根据实际情况修改源程序,给出全局变量或者函数的定义体;二是未定义的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有给定相应的函数库的名称,或者是该档案库的目录名称有问题,这时需要使用档案库维护命令ar检查我们需要的库函数到底位于哪一个函数库中,确定之后,修改gcc连接选项中的-l和-L项。

4,课堂作业

启动虚拟机,并在Linux下编写一个C程序,并自行调试通过.

那就编写一个最简单的hello world程序试试吧

首先为了方便管理,我新创建了一个目录用来存储以后的c程序

使用命令:“mkdir program”在根目录里创建了一个名为program的文件,可以用ls查看

然后我们进入program文件夹,创建一个新的文件hello

命令分别是:“cd program”,“mkdir hello”

 再进入hello文件,使用“vi hello.c”创建.c文件

按英文输入法下的i进入写状态,开始编写代码内容,下方会变为”INSERT“

输完后按Esc退出写状态,再输入:wq保存退出

指令:“gcc hello.c -o helloworld”
gcc编译程序,编译完成后,在你的文件中出现一个helloworld运行文件。(输入ls可以查看)

 指令:“./helloworld”,用来启动这个程序

可以看到已经成功了。

大功告成,休息一下,明天开始看实验一。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HereIs_linwuwu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值