在Ubuntu系统运用gcc和Makefile编译C程序

前言学习目的

  1. 编写包含主函数和子函数的调用子函数,掌握函数调用的概念
  2. 在Ubuntu下使用gcc命令行方式编译程序
  3. 在Windows下使用自己熟悉的编译工具编译C语言程序
  4. 在Ubuntu下使用Makefile方式进行程序编译,掌握Makefile的基本使用

一. 使用gcc编译C程序

  1. 文件代码编写过程

      	使用touch命令创建对应的文件,并且使用gedit对文件进行编辑
    
    • 编写 sub.h

      	#ifndef ## 标题__SUB.H
      	#define __SUB.H
      	
      	#include <stdio.h>
      	float x2x(int a, int b);  // 用于计算两个数相除
      
      	#endif
      
    • 编写 sub.c

      	#include <stdio.h>
      	
      	float x2x(int a,int b)
      	{
      		return (float) a / (float) b;  
      	}
      
    • 编写 main.c

      	#include <stdio.h>
      	#include "sub.h"
      	
      	int main()
      	{
      		int a = 9;
      		int b = 2;
      		printf("%.2f\n",x2x(a,b));
      		return 0;
      	}
      
  2. gcc平台编译的代码指令

编译过程编译使用命令作用
预处理gcc -e main.c -o main.i预处理器会先处理源文件,处理后的文件包括头文件内容、宏定义、条件编译等,生成一一个中间文件,以供编译器使用
编译gcc -s main.i -o main.s编译器会将预处理后的文件进行编译,生成汇编代码。
汇编gcc -c main.s -o main.o汇编器会将编译器生成的汇编代码转化成机器码,生成目标文件。
链接gcc main.o -o main链接器会将各个目标文件链接成一个可执行文件,包括静态链接和动态链接两种方式。
  1. gcc平台代码编译运行展示
  • First
    • 命令: gcc -c sub.c
    • 用途: 将sub.c程序转换为目标文件sub.o,便于之后链接
  • Second
    • 命令: gcc main.c sub.o -o main
    • 用途: 编译main.c文件为目标文件main.o,同时链接sub.o目标文件,进而生成main可执行文件
  • Third
    • 命令: ./main
    • 用途: **运行 main 可执行文件

在这里插入图片描述

二. 使用windows平台编译C程序

  • 平台工具 : Visual Studio 2019

  • 过程步骤

    1. sub 函数编写

      // sub.h 编写
      #pragma once
      float x2x(int a, int b);
      
      // sub.cpp 编写
      #include "sub.h"
      #include <stdio.h>
      
      float x2x(int a, int b)
      {
      	return float(a)/ float(b);
      }
      
    2. main 函数编写

      #include <stdio.h>
      #include "sub.h"
      int main()
      {
      	int a = 9, b = 2;
      	printf("%.2f\n", x2x(a, b));
      
      }
      
    3. C语言代码运行
      在这里插入图片描述](https://img-blog.csdnimg.cn/230d6ad8515948e18883f572c8bb937a.png#pic_center)

三.使用Makefile编译c程序

  • Makefile三要素
    作者: 吉平.集

  • 编写Makefile文件

    main1:sub1.o main1.c
            gcc main1.c sub1.o -o main1
    
    sub1.o:sub1.c
            gcc -c sub1.c -o sub1.o
    
  • 编译执行Makefile文件
    在这里插入图片描述

四. 学习心得

  1. GCC(GNU Compiler Collection)是Linux/Unix系统下最常用的编译器,可以用于编译源代码。它支持丰富的编译选项,能生成高效的机器码。
  2. Makefile是自动编译系统的基础,它记录了源代码与目标文件的依赖关系,可以自动完成编译任务。通过Makefile可以简化编译流程,避免每次手动调用gcc命令。
  3. Ubuntu下使用gcc编译是:编写Makefile->运行make命令。Makefile中需要定义源文件、目标文件、编译规则等信息。
  4. Makefile中的编译规则使用gcc命令进行编译,例如:目标文件:源文件、头文件等依赖项 tab gcc源文件其他参数 -可以自动完成依赖关系的编译。
  5. 使用Makefile可以方便地管理大型项目,支持增量编译。例如修改一个源文件后,只需要运行make就可以重新编译这个文件而不影响其他文件。
  6. 熟练掌握gcc和Makefile的使用,可以有效提高Ubuntu下Makefile也可以用于其他语言如管理。

书写不易,感谢各位大佬观看
₍ᐢ…ᐢ₎♡
喜欢的兄弟姐妹,跪求个赞
呜呜呜~~~~
在这里插入图片描述

友情链接

  1. https://blog.csdn.net/qq_45237293/article/details/108741893
  2. https://zhuanlan.zhihu.com/p/618350718
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LX很爱吃葱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值