嵌入式环境下C编程初探
嵌入式环境下C编程初探
一、实验目的
- 掌握 Ubuntu 系统下 C 语言多文件联合编译方法。
- 掌握 Linux 下 Makefile 工程编译原理与编写规范。
- 掌握 Windows Dev-C++ 多文件项目创建与跨平台代码运行。
- 理解主程序文件与子程序文件的代码分离、函数调用机制。
二、实验环境
- 虚拟机系统:Ubuntu 18.04 / 20.04
- 编译工具:gcc
- 编辑器:VSCode、gedit
- Windows 编译环境:Dev-C++ 5.8.3
三、实验内容与过程
任务一:Linux 多文件编程 + 命令行编译运行
1. 实验原理
将程序拆分为两个独立 .c 文件:
main1.c:主程序,定义变量、调用外部函数sub1.c:子程序,实现自定义运算函数x2x()
多文件编译需要同时编译两个文件,否则会出现未定义函数报错。
2. 代码编写
main1.c
#include <stdio.h>
int main()
{
float x2x(int a,int b);
int num1 = 5;
int num2 = 8;
float result = x2x(num1,num2);
printf("The result is:%f\n",result);return 0;
}
sub1.c
#include <stdio.h>
float x2x(int a, int b)
{
return (float)(a * b) / (a + b);
}
3. 编译命令
gcc main1.c sub1.c -o main1
./main1
4. 实验结果
程序成功运行,输出:
The result is:3.076923

5. 任务小结
Linux 下多文件程序必须同时编译所有依赖文件,否则找不到自定义函数,编译失败。
任务二:Linux Makefile 自动化编译
1. 实验原理
Makefile 用于管理大型项目,自动完成编译、更新、清理,不用每次输入长串 gcc 命令。
2. 编写 Makefile 文件
文件名必须为:Makefile(首字母大写、无后缀)
# Makefile
all:main1
main1:main1.c sub1.c
gcc main1.c sub1.c -o main1
clean:
rm -f main1
注意:gcc 前面必须是 Tab 缩进,不能用空格
3. 执行命令
make
./main1
make clean
4. 实验结果
-
make 自动完成编译,生成可执行文件
-
运行结果与任务一完全一致
-
make clean 可清除编译产物

5. 任务小结
Makefile 实现了一键编译、一键清理,极大提高多文件项目开发效率。
任务三:Windows Dev-C++ 多文件项目编译运行
1. 实验原理
Windows 下不能直接单独打开两个 .c 文件,必须创建项目工程,将两个文件加入同一工程才能正常调用函数。
2. 操作步骤
-
Dev-C++ 新建【控制台项目】
-
删除自动生成的
main.cpp(防止多 main 冲突报错) -
新建并保存
main1.c、sub1.c -
右键项目 → 添加文件,将两个
.c文件加入工程 -
编译运行(F11)
代码1:
#include <stdio.h> int main() { float x2x(int a,int b); int num1 = 5; int num2 = 8; float result = x2x(num1,num2); printf("The result is %f\n",result); return 0; }代码2:
#include <stdio.h> float x2x(int a, int b) { return (float)(a * b) / (a + b); }
3. 实验结果
Windows 端成功编译运行,输出结果:
The result is: 3.076923

4. 任务小结
Windows 多文件编程依赖项目工程管理,同一工程只能存在一个 main 函数,否则报重定义错误。
四、实验总结
- C 语言支持代码拆分,主程序和功能函数可以分文件存放,结构更清晰。
- Linux 手动 gcc 编译适合小程序,Makefile 适合正式项目自动化构建。
- Windows 与 Linux C 语言代码可通用,但编译方式不同。
- 多文件编程核心:函数声明、文件关联、工程统一编译。
五、实验心得
通过本次实验掌握了 Linux 多文件编译、Makefile 使用、Windows 跨平台编译,理解了大型程序的文件分层思想,为后续嵌入式开发、大型项目开发打下基础。

浙公网安备 33010602011771号