目录
一,vim编辑器
代码的运行首先需要做什么?编译?编译当然必不可少,但是在运行代码之前,首先你得需要写一段代码(或者c v),在devc这个软件中你只需打好代码运行即可,但是在linux中,有一种不同的方法来实现这个过程的第一步,那就是vim编辑器,把这复杂的话简单点说,他就是个敲代码的地方而已,vim编辑器的功能众多,长这个样子:
是的非常简洁,(帮助乌干达的可怜儿童T T)
运行代码就是vim 或者vim 加一个文件名,这样就可以新创建一个文件或者打开你已有的文件,再打开编辑器之后我们就可以在vim上敲写代码,但是直接敲是无法运行的,我们需要知道vim编辑器有三种模式:命令行模式,插入模式,底行模式
1.命令行模式
命令行模式就是刚打开的时候的模式,你可以在里面进行复制,剪切,粘贴,撤回,反撤回等等操作
2.插入模式
刚打开是无法编写代码的,这个是默认是命令行模式,这时需要按下键盘上的i(也就是insert编程语言很多都是英语的首字母所以记得好好学英语),这个时候你就可以开始编写你的hello world了,如果要退出或者进行复制等一系列操作,那么你需要按ESC,这时进入命令行模式就可以开始操作了
3.底行模式
底行模式一般用于退出保存等操作,可以shift+:进入,当然我推荐直接按空格,还是一样,ESC退出底行模式进入命令行模式
这是一副大概得思维脑图,有一些基础命令:
二,练习题
这是一些练习题,有关于linux指令的,也有一些vim编辑器内容的,没错也是博主的作业
练习1:
- 创建目录24081C,在该目录下创建目录dir1 dir2 文件file1
- 使用echo在file1中打印一首古诗【执行调整格式】
- 复制file1给file2
- 将file1移动到dir1
- 将file2移动到dir2
- 在file1后面追加一行语句“我爱C语言”
- 查看file1内容
1.mkdir -p 24081C/dir1 24081C/dir2
2.echo -e "\t煮豆燃豆杆\n\t豆在釜中喊\n\t都是一个爹\n\t为啥要杀俺">file1
//-e 代表可以使用转义字符\n \t,这两个一个是换行一个是空格//
3.cd 24081C
cp file1 file2
4.mv file1 dir1//已经到24081C中所以不需要写file的路径啦//
5.mv file2 dir2
6.echo -e "\t煮豆燃豆杆\n\t豆在釜中喊\n\t都是一个爹\n\t为啥要杀俺">>dir1/file1
//和第二小题的区别就是一个是>,一个是>>,前者是直接覆盖,不管你有咩有内容,而后者是追加一个内容到指定文件,效果如下展示://
7.cat dir1/file1
这并不难,对于博主来说只有两个问题(博主也是在学习中),一个就是代码有时候会敲错就算有tab,一个就是路径有时候会忘记加上导致一系列错误,当然博主会继续加油改正
练习2:
- 使用gcc 程序编译生成可执行文件的步骤分为__预处理______、___编译_____、__汇编______、___链接_____ (鲁科安全)
- GCC编译器中 -S 选项完成的工作是____编译____
- 写出gcc分步编译的详细步骤。
详情见标题三
- C语言的程序的入口函数是什么,请写出全称?
入口函数就是大家熟知的int main(){}中的main()函数了
- 用户编写了一个文本文件a.txt,想要得到一个名为txt.a的该文件,可以使用哪些指令呢?
①cp a.txt txt.a
②cat a.txt>txt.a 这个很重要,我一直以为是只有查看功能
- 分析一下#include <stdio.h>的意思
#表示:表示这是一个预处理命令,不同于C程序的以;结尾
include表示:这也是一个预处理命令,意思就是让编译器包含一个文件也就是<>里面的内容了
stdio.h表示:这就是一个库,是我们的先辈们为我们准备好的哦,是一个头文件,他是一个标准(std)的输入输出(input output)文件,如果不使用#includ<stdio.h>的话,编译器就找不到这个函数了,他就要报错了
<>可以改为””吗?二者的区别是什么?
当然有区别,<>里的头文件相当于从标准库(不止stdio.h的哈,还有很多很多呢)把它揪出来给你用,如果改成"",那么编译器会现在你当前的源文件所处文件夹中找,找不到了再去标准库,显然,<>直接去标准库中更为直接,当然,如果是你自定义的头文件或者库,那用""也是没有问题的!
三,gcc编译器的具体工作原理
我们知道gcc编辑器工作分为四个阶段,预处理,编译,汇编,链接
补充一下,我们输入的代码到它运行出结果,大致是这么一个过程
我们的语言>>汇编代码>>机器语言>>执行文件运行
- 首先是预处理部分,作为一名合格的程序员,我们希望自己的代码简洁明了,还要加上注释,但是注释也是写进去的,为什么没事呢?因为编译器的预处理操作会删除这些注释,不影响代码的运行和运行结果,还要讲宏给展开,并且将<>里的头文件引入我们的源代码,这样就可以使用库中的东西了
- 然后就是编译阶段了,上面说过了,我们的代码打进去电脑看不懂的,这个时候编译器就相当于是一个翻译官了,在汇编阶段, 我们的编译器会将代码转换为汇编语言,等待下一步的执行
- 在汇编阶段,编译器又是一个翻译官,他会把上一步的汇编语言给转换成机器语言,当然这个时候这些指令代码还无法直接运行的,因为他们还没链接在一起
- 最后就是链接阶段了,这些文件会被链接在一起,形成一个可执行的文件,这时就可以执行我们所需要的代码了
让我们请出hello world老祖:
#include<stdio.h>
/头文件/
int main(){
/输出hello world/
print("hello world");
return 0;
}
首先我们打完代码之后,预处理会将这些注释删除,然后编译阶段将这些语言转换成汇编语言,汇编阶段将这些汇编语言都变成机器语言,让我们的机器可以读得懂,最后就是链接这些代码文件,让他可以执行,这样,就可以输出hello world了!!
好的就这样博主眼睛马上瞎了,如果觉得写的还行就点个赞,如果觉得很烂也别骂我,包玻璃心的老弟