Ubuntu系统使用gcc和Makefile编译C语言程序

        (一)使用gcc直接编译C语言程序

     1.利用gcc来完成简单C语言编译

           我们以编写简单的“hello world”为例,我们可以利用vi或vim命令来完成代码的编写。

          

          代码如下                                 

      利用gcc完成完成编译及运行

         2.gcc编译的原理和过程(以“hello.c"为例)

              利用gcc命令将C语言文件转化为可执行文件需要执行四个步骤,分别是预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)和链接(Linking)。

           1.预处理是对源代码的头文件以及预编译语句(如宏定义的define)进行编译。生成的文件后缀名为.i,命令如下 。

            打开hello.i文件

       我们可以看到主函数以上的头文件已经进行了编译。

      2.编译是针对汇编语言的步骤,检查代码以及将其翻译成汇编语言,生成的文件后缀名为.s,命令如下。

 

       打开hello.s文件

可以看到源代码已经转化为了汇编语言。 

3.汇编的作用是生成目标文件,文件的后缀名为.o,命令如下

 hello.o文件打开我们会看见一堆乱码,是因为汇编产生的是一个二进制文件,但是它是不可以执行的,所以就需要最后一步。

4.链接是将目标文件转化为可执行文件,命令如下

5.最后就可以执行文件了

 3.利用gcc完成两个文件的编译

      编写main2.c

     

    编写sub1.h

     

 执行命令  gcc main2.c sub1.h -o main 将两个文件一起编译,并生成可执行文件main,然后用命令 ./main 执行它。

(二)在window平台上进行编译

     工具:Dev-c++ 

     编写main.c

 编写sub1.h

编译运行

(三)使用Makefile编译C程序

        在Ubuntu系统中用gcc编译程序有一个很大的弊端,假如我们编写了许多文件,但发现其中由一两个文件需要更改,只用gcc就需要所有的文件重新编译一遍,这样就会让简单的编译过程复杂化。这是,我们就可以运用到Linux中一个重要的工具make,它最大的特点就是可以自动化编译,这个工具是用户自己去定义文件makefile,在其中写上各个文件之间的关系,在使用命令make就可以把上述复杂的编译步骤一步到位。下面就来介绍一下有关make和makefile的有关知识。

1.编写makefile的规则

     目标文件:依赖文件

     <TAB>  编译命令

2.编写代码

 编写main2.c

编写sub1.h

编写sub2.c

3.使用makefile进行编译

     使用vi创建makefile文件

     

     输入make命令调用并执行makefile

   

    执行文件jewe

可以看到我们只用了一个make命令就完成了编译并产生了一个可以正确执行的文件jewe。

(四)总结

   这次在Ubuntu上编译C语言的实验中,我学到两种全新的编译工具gcc和makefile,以及如何在Linux系统中编译C语言文件。在window上简单快捷的编译过程,让我对编译这一过程一直都无法明白它的原理和过程。在学习完gcc后让我对编译这一过程有了更深入的理解,它并不像在window中的那样可以一步到位,而是分成了预处理、编译、汇编、链接这四个步骤。这无疑会对我后面C语言的学习有极大帮助。而在后面我也发现了gcc在编译是的弊端,就是在面对多个文件时,万一源代码出现了错误,就需要重复麻烦的编译,这时候自动编译工具make就起到了极大作用,它只需要将代码关系和命令写进makefile文件里面,前面重复复杂的编译工作就只需要一个简单的make命令就能解决。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值