在Ubuntu系统中使用gcc和Makefile编写c程序

一. 任务要求

   请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。

1) 请在ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行; 

2) 请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。

3) 在任务4基础上,在ubuntu系统下用Makefile方式编程主程序。

二. 解决任务

(一)在ubuntu系统下用gcc命令行的方式编译主程序并运行

    1.编写c程序

    1.1编写main1.c

    1.2编写sub1.h

    1.3编写sub1.c

    2.调试运行

    2.1将sub1.c程序转换为目标文件sub1.o

    命令: gcc -c sub1.c

    2.2编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件

    命令:gcc main1.c sub1.o -o main1

     2.3执行./main1命令,即可执行编译生成的main1程序

    3.注意:gcc编译过程分为四个阶段,包括预处理、编译、汇编、链接。

 ( 二).在windows系统下编译主程序并运行

    1.编译工具:DEV-c++

    2.程序:与ubuntu上一致

    2.1 main1.c

    2.2 sub1.h

2.3 sub1.c

    2.4 运行结果:

(三).在ubuntu系统中用Makefile方式编程主程序。

    1.Makefile文件编写规则

target:prerequisites
    command            # command以一个tab键开始

# target为一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)
# prerequisites是需要生成target所依赖的文件或是目标
# command也就是make需要执行的命令。(任意的Shell命令)

    2.Makefile 作用

make 的执行过程,make 工具就是在 Makefile 中一层一层的查找依赖关系,并执行
相应的命令。编译出最终的可执行文件。
Makefile 的好处就是“自动化编译”,一旦写好了 Makefile文件,以后只需要一个 make 命令即可完成整个工程的编译,极大的提高了开发效率。

   3.编写Makefile文件

    4.使用Makefile编译c程序

在源文件目录下执行make命令,可得到执行文件main1

    注: Makefile在编写时不能使用空格只能用TAB键,否则会报错。

三. 总结

  通过本次实验,我学会了安装并且使用ubuntu、使用gcc直接编译和Makefile编译生成执行文件来运行c程序。

  在gcc中,我了解到了gcc编译器的编译流程是:预处理、编译、汇编和链接。预处理就是展开所有的头文件、替换程序中的宏、解析条件编译并添加到文件中。编译是将经过预编译处理的代码编译成汇编代码,也就是我们常说的程序编译。汇编就是将汇编语言文件编译成二进制目标文件。链接就是将汇编出来的多个二进制目标文件链接在一起,形成最终的可执行文件,链接的时候还会涉及到静态库和动态库等问题。

  在Makefil中make 命令会在当前目录下查Makefile(makefile 其实也可以)命名的文件。当找到 Makefile 文件以后就会按照 Makefile 中定义的规则去编译生成最终的目标文件。当发现目标文件不存在,或者目标所依赖的文件比目标文件新(也就是最后修改时间比
目标文件晚)的话就会执行后面的命令来更新目标。

参考文章:Ubuntu系统使用gcc和Makefile编译C程序_ubuntu使用 make编译链接多个c语言代码,变量法_不#曾&轻听的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值