本文目的是通过在Ubuntu系统上编译多个C程序来熟练掌握在Linux系统上编写C程序。相关程序名称分别为main1.c、sub1.c、sub1.h。采用三种方式进行编译,第一种是直接使用gcc在命令行编译,第二种是在windows系统上使用编程软件编译,第三种是使用Makefile文件编译。
目录
(一)直接使用gcc编译C程序
1.编写C程序
- 编写main1.c
#include"sub1.h"
int main()
{
int x=3,y=8;
printf("%.2f\n",x2x(x,y));
return 0;
}
- 编写sub1.h
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a,int b);
#endif
- 编写sub1.c
#include "sub1.h"
float x2x(int a,int b)
{
float c;
c=(float)b/a;
return c;
}
2.gcc编译过程
编译阶段 | 编译命令 | 作用 |
---|---|---|
预处理 | gcc -E main1.c -o main1.i | 将源代码中包含头文件进行编译 |
编译 | gcc -S main1.i -o main1.s | 检查代码规范性并翻译成汇编语言 |
汇编 | gcc -c main1.s -o main1.o | 将.s文件转换为目标文件 |
链接 | gcc main1.o -o main1 | 将目标文件转换为可执行文件 |
3.gcc执行编译
- 步骤一
命令:gcc -c sub1.c - 步骤二
命令:gcc main1.c sub1.o -o main1 - 步骤三
执行./main1命令,即可执行编译生成的main1程序
(二)使用windows平台进行编译(Dev-c++)
- 编写main1.c文件
- 编写sub1.h头文件
-运行结果
(三)使用Makefile编译c程序
在终端输入命令安装make
sudo apt-get install make
1.Makefile文件编写规则
target:prerequisites
command # command以一个tab键开始
# target为一个目标文件,可以是Object File,也可以是执行文件。还可以是一个标签(Label)
# prerequisites是需要生成target所依赖的文件或是目标
# command也就是make需要执行的命令。(任意的Shell命令)
2.编写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
clean:
rm *.o
- 命令行输入make即可编译得到可执行文件main1
- 运行结果
注:在源文件目录下执行命令make clean,即可删除编译过程中产生的*.o文件
(四)总结
本次实验,我在Ubuntu系统上编译C语言,使用gcc直接编译和Makefile编译两种方式。使用gcc这一工具时,我理解到C语言源程序编译为可执行文件的过程,用Windows进行编译C语言更加简洁,但不好理解代码成为可执行文件的过程,这些编译过程会使我们更加了解C语言的执行过程。