VIM编辑器和GCC编辑器

十、Linux下的C编程入门

10.1、Hello World!

在我们编写代码中,主要包括两部分:代码编写和编译,在Windows下我们可以直接使用visual studio来完成这个功能,但是我们在Linux系统下,这两部分是分开的,我们一般是利用VIM、Emacs、VScode编辑器进行代码的编译,然后再使用GCC编译器进行编译。
10.1.1、编写代码
先在用户根目录下创建一个工作文件夹:C_Program,所有的 C 语言练习都保存到这个工作文件夹下,创建过程如图所示:
在这里插入图片描述
接着我们进入到我们创建的C_Program 工作文件夹,为了方便管理,我们后面每个例程都创建一个文件夹来保存所有与本例程有关的文件,创建一个名为“3.1”的文件夹来保存我们的“Hello World”程序相关的文件,操作如图 所示:在这里插入图片描述
由于vim有些设置我们一直没有进行设置,接下来我们将要对vim编辑器进行一些设置。
1、设置TAB键为4字节
VI 编辑器默认 TAB 键为 8 空格,我们改成 4 空格,用 vi 打开文件/etc/vim/vimrc,在此文件最后面输入如下代码:
set ts=4
添加完成如图所示:在这里插入图片描述
修改完成后保存并关闭文件。
2、VIM编辑器显示行号
VIM 编辑器默认是不显示行号的,不显示行号不利于代码查看,我们设置 VIM 编辑器显示行号,同样是通过文在文件/etc/vim/vimce中添加代码来实现,在文件最后面加入一行代码即可:
set nu
添加完成后的/etc/vim/vimce问价如图所示:在这里插入图片描述
VIM 编辑器可以自行定制,网上有很多的博客讲解如何设置 VIM,感兴趣的可以上网看一下。设置好 VIM 编辑器以后就可以正式开始编写代码了,进入前面创建的“3.1”这个工程文件
夹里面,使用 vi 指令创建一个名为“main.c”的文件,然后在里面输入如下代码:
在这里插入图片描述
编写完成以后保存退出 vi 编辑器,可以使用“cat”命令查看代码是否编写成功,如图所示:在这里插入图片描述
从上图可以看出 main.c 文件是编辑成功的,代码编辑成功以后我们需要对其进行编译。
10.1.2、编译代码
Linux下的 C 语言编译器是 GCC,GCC 编译器在我们Linux的时候就已经默认安装好了,可以通过如下命令查看 GCC 编译器的版本号:在这里插入图片描述
在终端中输入上述命令以后终端输出如图所示:在这里插入图片描述
接下来我们就需要进行编译文件,输入命令:
在这里插入图片描述
上述命令的功能就是使用 gcc 编译器来编译 main.c 这个 c 文件,过程如图所示:在这里插入图片描述
接着,我们在终端使用命令:
gcc main.c -o main
就产生了一个main文件,再在终端输入命令:
./main
执行结果:hello world!
这样,我们所编写的代码就执行完毕。

10.2、GCC编译器

10.2.1、gcc命令
格式:
在这里插入图片描述
主要参数:
-c:只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件。
-o:<输出文件名>用来指定编译结束以后的输出文件名,如果使用这个选项的话 GCC 默
认编译出来的可执行文件名字为 a.out。 -g:添加调试信息,如果要使用调试工具(如 GDB)的话就必须加入此选项,此选项指示编
译的时候生成调试所需的符号信息。
-O:对程序进行优化编译,如果使用此选项的话整个源代码在编译、链接的的时候都会进
行优化,这样产生的可执行文件执行效率就高。
-O2:比-O 更幅度更大的优化,生成的可执行效率更高,但是整个编译过程会很慢。
10.2.2、编译错误警告
在 Windows 下不管我们用啥编译器,如果程序有语法错误的话编译的时候都会指示出来,比如开发 STM32 的时候所使用的 MDK 和 IAR,我们可以根据错误信息方便的修改 bug。那
GCC 编译器有没有错误提示呢?肯定是有的,我们可以测试以下,新名为“3.2”的文件夹,使用 vi 在文件夹“3.2”中创建一个 main.c 文件,在文件里面输入如下代码:
在这里插入图片描述
在上述代码中有两处错误:
第 8 行、第一处是“b=4”少写了个一个“;”号。
第 9 行、第二处应该是 printf(“a+b=%d\n”, a + b);
我们编译以下上述代码,看看 GCC 编译器是否能够检查出错误,编译结果如图所示:在这里插入图片描述
从上图中可以看出有一个 error,提示在 main.c 文件的第 9 行有错误,错误类型是在printf 之前没有“;”号,这就是第一处错误,我们在“b = 4”后面加上分号,然后接着编译,结果又提示有一个错误,如图所示:在这里插入图片描述
在上图中,提示我们说文件 main.c 的第 9 行:printf(“a+b=\n”, a + b)有 error,错误是因为太多参数了,我们将其改为:
在这里插入图片描述修改完成以后接着重新编译一下,结果如图所示:在这里插入图片描述
在上图中我们编译成功,生成了可执行文件 main,执行一下 main,看看结果和我们设计的是否一样,如图所示:在这里插入图片描述可以看出,GCC 编译器和其它编译器一样,不仅能够检测出错误类型,而且标记除了错误发生在哪个文件?哪一行?方便我们去修改代码。
10.2.3、编译流程
GCC 编译器的编译流程是:预处理、编译、汇编和链接。预处理就是展开所有的头文件、替换程序中的宏、解析条件编译并添加到文件中。编译是将经过预编译处理的代码编译成汇编
代码,也就是我们常说的程序编译。汇编就是将汇编语言文件编译成二进制目标文件。链接就是将汇编出来的多个二进制目标文件链接在一起,形成最终的可执行文件,链接的时候还会涉及到静态库和动态库等问题。
上面演示的例程都只有一个文件,而且文件非常简单,因此可以直接使用 gcc 命令生成可执行文件,并没有先将 c 文件编译成.o 文件,然后再链接在一起。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值