嵌入式开发环境与软件编程基础
本文介绍了在Windows环境下通过VMware搭建Ubuntu 22.04虚拟机并配置C语言开发环境的完整流程。主要内容包括:1)从清华镜像站下载Ubuntu系统并完成虚拟机安装;2)配置国内软件源以加速下载;3)安装gcc、vim等开发工具;4)通过"Hello World"程序演示C语言编译运行过程;5)实现多文件C程序在Ubuntu下的gcc编译和Windows下Dev
文章目录
嵌入式开发环境与软件编程基础
前言
- 本文聚焦于Windows 环境下Ubuntu 虚拟机搭建与 C 语言基础开发的完整链路,既是对 Linux 系统操作能力的入门训练,也是对 C 语言编译、链接及工程化构建流程的实践梳理。从 Ubuntu 系统(Ubuntu 22.04 LTS为例)的虚拟机安装、国内软件源配置(解决官方源下载慢的痛点),到 vi/vim 等文本编辑器的使用,我们先完成 Linux 开发环境的 “基建”;随后通过 “Hello World” 程序入门 C 语言编译运行,再进阶至多文件(主程序与子程序)项目开发,分别实践 GCC 命令行编译与 Windows 下可视化工具编译,最后通过 Makefile 实现项目的自动化构建 —— 各任务环环相扣,从 “环境搭建” 到 “代码实现” 再到 “工程化管理”,完整覆盖了 Linux 平台下 C 语言开发的基础核心技能,为后续更复杂的程序开发与系统级编程打下扎实基础。图文并茂、步骤清晰,适合零基础读者一步步跟随操作。
- 本文所用工具:
- 虚拟机:VMware Workstation Pro
- 目标系统:Ubuntu 22.04.5 LTS 桌面版(代号 jammy)
- 开发工具:gcc、vim、Make、Windows 下 DevC++
1.Ubuntu 22.04 虚拟机安装与环境搭建
1.1 下载Ubuntu镜像文件
由于本人在去年已经安装完成,因此此处仅作简述,详情可观看其他博主的
📌📌📌
基于VMware虚拟机的Ubuntu22.04安装教程
📌📌📌
- 进入镜像站
推荐使用清华大学开源软件镜像站(TUNA),选择需要下载的版本进入
- 下载桌面版(带有desktop)

1.2安装与配置简述
(1)打开 VMware,点击“创建新的虚拟机”;
(2)选择“典型”安装,加载 Ubuntu ISO 镜像;
(3)设置用户名、密码、磁盘大小(建议 ≥20GB);
(4) 启动虚拟机,完成图形化安装过程;
(5)安装完成后重启,进入 Ubuntu 桌面环境。
✅ 验证:成功进入 Ubuntu 桌面,鼠标键盘正常,网络连接可用。
Ubuntu 默认使用国外官方源,下载速度慢。我们将其更换为 清华大学开源软件镜像站。
备份原始源列表 打开终端(Ctrl+Alt+T),执行:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
(6)替换为清华源(Ubuntu 22.04 jammy)
打开终端输入:
sudo vim /etc/apt/sources.list
i进入编辑模式
然后粘贴以下清华源配置(适用于 Ubuntu 22.04 LTS):
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# 额外更新源(可选)
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
📝 不同版本代号参考,然后替换
jammy:
- Ubuntu 22.04 →
jammy- Ubuntu 20.04 →
focal- Ubuntu 18.04 →
bionic- Ubuntu 16.04 →
xenial
(7)保存并更新软件源
esc退出,输入:wq保存并写入
然后执行更新:
sudo apt update
1.3编译工具
刚安装好的系统缺少许多常用软件,如gcc,git等
基本的编译和构建软件工具可以用下面的命令进行安装,build-essential软件包组包含了gcc、g++、make等编译工具和构建工具,也包含了标准 C 库和头文件。打开终端,输入如下命令
sudo apt install build-essential -y
1.4安装代码编辑软件(VIM)
打开终端,可输入vim检查是否已经安装完毕,若未完成,则输入以下命令
sudo apt install vim
2.Ubuntu下C语言的hello world
-
创建项目目录
mkdir programming -
进入项目文件夹
cd programming -
用vim创建源文件
vim hello.ci进入编辑模式,
然后粘贴以下代码:#include <stdio.h> int main() { printf("Hello World!\r\n"); return 0; }点击
esc后,输入:wq写入退出
效果如下:

ls列出当前目录中所有非隐藏的文件和文件夹 -
编译并运行
gcc hello.c -o hello ./hello✅ 输出:
hello world!

- gcc编译过程
gcc的作用就是把它一步步翻译成电脑能直接运行的程序:- 预处理 → 展开头文件(如
#include <stdio.h>) - 编译 → 把 C 代码转成汇编代码
- 汇编 → 把汇编代码转成机器码(
.o文件) - 链接 → 把机器码和系统库(比如
printf)打包成最终可执行文件hello
- 预处理 → 展开头文件(如
3.多文件C程序分别在Ubuntu和Windows下编译
3.1Ubuntu下gcc编译多文件
- 创建项目目录
mkdir programming
- 创建
sub1.h头文件
// 函数声明:接收两个int类型参数,返回float类型(平均数)
float x2x(int a, int b);
- 编写
sub1.c程序 —— 子程序文件,实现函数x2x(求平均数)
- 创建sub1.c文件
vim sub1.c
- 编写代码
float x2x(int a, int b){
return (a+b)*0.5;
}
- 编写
main1.c程序—— 主程序,调用x2x
- 创建main1.c文件
nano main1.c
- 编写代码
#include <stdio.h>
#include "sub1.h"
int main(void)
{
int num1=0, num2=0;
float result=0.0;
// 提示用户输入数据
printf("请输入第一个整数:");
scanf("%d", &num1);
printf("请输入第二个整数:");
scanf("%d", &num2);
// 调用函数计算
result = x2x(num1, num2);
// 输出结果
printf("x2x(%d, %d) 的运算结果是:%.2f\n", num1, num2, result);
return 0;
}
- 编译两个文件并链接成可执行程序
gcc main1.c sub1.c -o main1
./main1
✅ 输出结果如:
x2x(3, 4)的运算结果是 = 3.50
- 图解编译链接过程

3.2Windows下编译多文件
使用Dev-C++:
-
创建新项目,添加
main1.c和sub1.c

-
编译运行结果如下

4.使用Makefile自动化编译
相较于Makefile编译,GCC命令行编译的核心缺点在于:面对多文件项目(如main1.c与sub1.c组成的程序)时,需手动输入完整编译命令(如gcc main1.c sub1.c -o main1),文件增减或编译参数调整(如添加优化选项、库依赖)需反复修改命令,易出错且操作繁琐;仅修改单个文件(如仅更新sub1.c)时,会强制全量编译所有文件,导致项目越大冗余耗时越长;同时,编译规则、产物清理(如删除.o文件)等操作缺乏统一管理,难以同步配置,也无法便捷实现多目标编译(如同时生成调试版与发布版),可维护性和扩展性远不及通过Makefile对编译流程的自动化、模块化管控。
4.1使用Makefile编译代码
- 编写Makefile
在项目目录中,创建一个名为 Makefile 的文件。
vim Makefile
然后输入以下内容
# 定义编译器
CC = gcc
# 定义编译选项
CFLAGS = -Wall -O2
# 目标文件
TARGET = main1
# 源文件
SRCS = main1.c sub1.c
# 生成可执行文件
$(TARGET): $(SRCS)
$(CC) $(CFLAGS) $(SRCS) -o $(TARGET)
# 清理目标文件和可执行文件
clean:
rm -f $(TARGET)
# 运行程序
run: $(TARGET)
./$(TARGET)
点击esc后,输入:wq写入退出
输入ls查看是否成功创建
2. 使用make编译
# 编译程序
make
# 运行程序
make run
# 清理编译生成的文件
make clean
得到相同的输出结果
5. 总结
本文围绕 Windows 环境下 Ubuntu 虚拟机搭建与 C 语言基础开发 展开,从零出发形成了从 “环境基建” 到 “工程化开发” 的完整实践链路,适合嵌入式开发零基础学习者入门,核心内容可总结为以下五部分:
🔹 环境搭建 —— 以 VMware Workstation Pro 为载体,安装 Ubuntu 22.04 LTS 桌面版。
🔹 工具链配置 —— 安装 gcc、make、vim,为后续 C 语言开发配齐 “基础设施”。
🔹 程序开发 —— 从单文件 Hello World 入门,到多文件 main1.c + sub1.c 模块化编程,理解gcc编译过程。
🔹 跨平台验证 —— 在 Windows(Dev-C++)与 Linux(gcc)不平台编译同一套代码不同系统的区别于特点。
🔹 工程化进阶 —— 引入 Makefile,实现自动化编译。
📌 如本文对你有帮助,欢迎点赞 ✅、收藏 ⭐、关注 💡,你的支持是我持续创作的最大动力!
💬 有任何问题或建议,欢迎在评论区留言,我会一一回复!
(如需进一步交流,欢迎查看个人主页简介~)
更多推荐



所有评论(0)