前言学习目的
- 编写包含主函数和子函数的调用子函数,掌握函数调用的概念
- 在Ubuntu下使用gcc命令行方式编译程序
- 在Windows下使用自己熟悉的编译工具编译C语言程序
- 在Ubuntu下使用Makefile方式进行程序编译,掌握Makefile的基本使用
一. 使用gcc编译C程序
-
文件代码编写过程
使用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; }
-
-
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 | 链接器会将各个目标文件链接成一个可执行文件,包括静态链接和动态链接两种方式。 |
- 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
-
过程步骤
-
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); }
-
main 函数编写
#include <stdio.h> #include "sub.h" int main() { int a = 9, b = 2; printf("%.2f\n", x2x(a, b)); }
-
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文件
四. 学习心得
- GCC(GNU Compiler Collection)是Linux/Unix系统下最常用的编译器,可以用于编译源代码。它支持丰富的编译选项,能生成高效的机器码。
- Makefile是自动编译系统的基础,它记录了源代码与目标文件的依赖关系,可以自动完成编译任务。通过Makefile可以简化编译流程,避免每次手动调用gcc命令。
- Ubuntu下使用gcc编译是:编写Makefile->运行make命令。Makefile中需要定义源文件、目标文件、编译规则等信息。
- Makefile中的编译规则使用gcc命令进行编译,例如:目标文件:源文件、头文件等依赖项 tab gcc源文件其他参数 -可以自动完成依赖关系的编译。
- 使用Makefile可以方便地管理大型项目,支持增量编译。例如修改一个源文件后,只需要运行make就可以重新编译这个文件而不影响其他文件。
- 熟练掌握gcc和Makefile的使用,可以有效提高Ubuntu下Makefile也可以用于其他语言如管理。
书写不易,感谢各位大佬观看
₍ᐢ…ᐢ₎♡
喜欢的兄弟姐妹,跪求个赞
呜呜呜~~~~
友情链接
- https://blog.csdn.net/qq_45237293/article/details/108741893
- https://zhuanlan.zhihu.com/p/618350718