Ubuntu下c语言多文件编译以及Makefile使用
·
Ubuntu下C语言程序编译与Makefile使用
一、实验目的
- 掌握Ubuntu虚拟机基础操作,更换国内软件源。
- 学会使用gcc编译多文件C语言工程。
- 掌握Makefile编写,利用make工具自动化编译。
- 在Windows平台使用gcc完成同样程序的编译运行。
二、实验环境
虚拟机:Ubuntu 22.04
宿主机操作系统:Windows
编译工具:gcc、make(Ubuntu);MinGW‑w64‑gcc(Windows)
三、实验源码
main1.c
#include <stdio.h>
extern float x_func(int a,int b);
int main(){
int m=7,n=3;
float r;
r = x_func(m,n);
printf(“res=%f\n”,r);
return 0;
}
sub1.c
c
float x_func(int a,int b){
return (float)a/b;
}
Makefile
makefile
calc: main1.c sub1.c
gcc main1.c sub1.c -o calc
clean:
rm -f calc
说明:gcc与rm前面必须用Tab缩进,空格会造成make报错。
四、Ubuntu操作步骤
- 将Ubuntu软件源更换为国内镜像源。


- 安装编译套件
bash
sudo apt install build-essential
输入用户密码等待安装结束。 - gcc直接编译运行
bash
gcc main1.c sub1.c -o calc
./calc
运行输出: res=2.333333

- make编译
bash
make
./calc
源码未改动时执行make,提示 ‘calc’ is up to date.

- 清理编译产物
bash
make clean
calc被删除,再次执行 ./calc 提示找不到文件。

五、Windows平台操作步骤 - 配置MinGW‑w64环境变量, gcc --version 校验成功。
- 将两份源码放在同一个文件夹。
cmd执行编译:
cmd
gcc main1.c sub1.c -o calc.exe
cmd
calc.exe
控制台输出 res=2.333333 。
Windows没有安装make,Makefile仅在Ubuntu内验证。
六、遇到的问题与解决办法
1.编译报错找不到stdio.h
解决:执行 sudo apt install build‑essential 补齐开发包。
2.make clean提示 No rule to make target ‘clean’
解决:Makefile里面指令行开头使用Tab,不能输入空格。
3.多条命令一次性传给make产生报错
解决:命令逐条输入,单次只执行一项任务。
七、实验总结
本次实验完成多文件C项目编译。gcc能够同时处理多个源文件进行链接。Makefile用来简化重复编译工作,make对比文件时间戳来判断是否需要重新编译,clean规则用来清理编译生成的可执行文件。Ubuntu与Windows上gcc编译逻辑大体一致,区别在于Windows可执行文件带有exe后缀,原生不带make工具。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)