前言
这段时间因为疫情学校封寝等原因,开摆了好久,眼看着离操作系统和数据库上机提交报告截止时间不远了,要开始好好学习,这个帖子算是一个个人随笔。
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”,用来启动这个程序
可以看到已经成功了。
大功告成,休息一下,明天开始看实验一。
本文链接:https://my.lmcjl.com/post/8338.html
4 评论