news 2026/9/12 21:06:54

初学嵌入式——使用ubuntu和Windows编译运行C语言程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
初学嵌入式——使用ubuntu和Windows编译运行C语言程序

文章目录

  • 前言
  • 一、Ubuntu 系统安装和基础配置
  • 二、在Ubuntu系统中下载并配置c语言环境
    • 1.首先Ctrl+alt+T进入终端
    • 2.新安装的ubuntu系统需要更新源
    • 3.安装vim
    • 4.安装gcc
    • 5.安装编译程序必须软件包的列表信息
  • 三、在ubuntu环境下编写helloworld
    • 1.编写程序
    • 2.编译程序
    • 3.运行程序
  • 四、编写一个主程序文件main1.c和一个子程序文件sub1.c
    • 1.创建子程序文件sub1.c
    • 2.创建头文件sub1.h
    • 3.创建主程序文件main1.c
    • 4.在Ubuntu下编译运行
    • 5.在Windows下编译运行
  • 五、Ubuntu系统下用Makefile方式编程主程序
    • 1.创建Makefile
    • 2.使用Makefile编译
    • 3.Makefile说明
  • 总结

前言

C 语言是一门经典的结构化编程语言,可跨操作系统平台运行,在嵌入式开发、底层开发领域应用广泛。在 Linux 开发环境中,gcc 编译器、Makefile 工程管理工具是 C 项目开发最基础、最核心的工具。通过本次实验,建立了跨平台 C 语言开发的基础认知,不仅提升了自己的技术能力,还对软件开发流程有了更深入的理解。


一、Ubuntu 系统安装和基础配置

通过虚拟机安装Ubuntu桌面版。
由于我之前已经安装过Ubuntu20.04桌面版,这里给出参考链接:
安装Ubuntu桌面版

二、在Ubuntu系统中下载并配置c语言环境

1.首先Ctrl+alt+T进入终端

2.新安装的ubuntu系统需要更新源

输入:

sudo apt-get update

然后会要求输入你的密码

3.安装vim

输入:

sudo apt-get install vim

红框部分记得都输入Y就可以了

4.安装gcc

输入:

sudo apt-get install gcc

5.安装编译程序必须软件包的列表信息

输入:

sudo apt-get install build-essential

三、在ubuntu环境下编写helloworld

1.编写程序

打开终端,使用文本编辑器(如vim)创建一个新的C语言源文件。这里以hello.c为例:

vimhello.c

在编辑器中输入以下C语言代码:

#include<stdio.h>intmain(void){printf("hello world!\n");return0;}


保存并退出编辑器(按 ESC键 退出编辑模式,输入 :wq 保存退出)

2.编译程序

在终端中,使用gcc编译器 编译刚才创建的C语言源文件。输入以下命令:

gcc-Wall hello.c-o hello

在 gcc 后面 , -o hello 是为生成的文件命名为hello,如果不加-o则默认生成的a.out文件

3.运行程序

编译成功后,你可以在终端中运行这个程序。输入以下命令:

./hello

如果没有出现问题,你应该会在终端看到输出:

hello,world!


综上,以上就是在Ubuntu系统下使用C语言编写、编译并运行一个简单的"Hello, World!"程序的完整过程。

四、编写一个主程序文件main1.c和一个子程序文件sub1.c

1.创建子程序文件sub1.c

vimsub1.c

在sub1.c中编写函数:

floatx2x(inta,intb){//简单运算(a+b)*2.5return(a+b)*2.5;}

2.创建头文件sub1.h

vimsub1.h

在sub1.h中声明函数:

#ifndefSUB1_H#defineSUB1_Hfloatx2x(inta,intb);#endif

3.创建主程序文件main1.c

vimmain1.c

在main1.c中编写主程序:

#include<stdio.h>#include"sub1.h"intmain(){intnum1=10;intnum2=20;floatresult=x2x(num1,num2);printf("计算结果: %.2f\n",result);return0;}

4.在Ubuntu下编译运行

# 编译 gcc main1.c sub1.c-o program
# 运行./program

运行结果:

5.在Windows下编译运行

1.打开Dev-C++
2. 创建新项目,添加main1.c和sub1.c文件
3.编译运行项目

五、Ubuntu系统下用Makefile方式编程主程序

1.创建Makefile

vimMakefile

编写Makefile内容:

CC = gcc CFLAGS = -Wall program: main1.o sub1.o $(CC) $(CFLAGS) -o program main1.o sub1.o main1.o: main1.c sub1.h $(CC) $(CFLAGS) -c main1.c sub1.o: sub1.c sub1.h $(CC) $(CFLAGS) -c sub1.c clean: rm -f *.o program

2.使用Makefile编译

# 编译make# 运行./program# 清理编译文件makeclean

编译结果:

3.Makefile说明

CC = gcc: 指定使用的编译
CFLAGS= -Wall: 编译选项,开启所有警告
program: main1.o sub1.o: 指定目标文件依赖关系
clean: 清理编译生成的文件

优点:

  1. 增量编译:只重新编译修改过的源码文件,无需全部重编译,项目越大越节省时间。
  2. 统一编译配置CCCFLAGS集中定义,修改编译参数只需改动一处。
  3. 代码规范检查-Wall开启警告,提前发现代码潜在错误。
  4. 一键编译与清理,简化多文件工程的重复编译操作。

总结

通过本次 Ubuntu 系统下的 C 语言编程实践,我完成了从虚拟机环境搭建、源码编写到多文件工程编译的完整开发流程。在这个由浅入深的过程中,我不仅熟悉了Linux环境下的开发流程,还掌握了多种开发工具的使用方法。

首先我学会了在虚拟机里配置 Ubuntu 系统,知道了怎么替换国内软件源,来加快下载速度,也上手练习了 Linux 基础命令,学习了vim、nano和gedit等文本编辑工具的使用,为后续的程序开发打下了基础。

在程序开发方面,从最简单的 Hello World 程序入手,熟悉了 gcc 编译命令,搞懂在 Linux 里 C 程序是怎么编译、怎么运行的。这次实验重点练习了 C 语言多文件编程,把运算函数x2x单独放到 sub1.c 文件,主函数放在 main1.c,通过 extern 声明外部函数,实现跨文件调用,这让我体会到把代码拆分到多个文件的模块化思路。同一个代码,我分别在 Ubuntu 用 gcc 编译,也在 Windows 编译器里跑通,真切感受到 C 语言跨平台的特点。

实验过程里也踩了不少坑。比如 Makefile 的规则行前面必须用 Tab 缩进,用空格就直接报错;忘记写外部函数声明会出现链接错误;软件源里的系统版本代号写错,apt 更新就会失败。一个个排查解决问题的过程,也让我对 Linux 下程序编译原理理解更深。

希望通过我的这次学习,能够为大家今后在Linux环境下的程序开发提供有益的参考,为之后学习嵌入式开发打下基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 21:06:15

CookLikeHOC 蒸菜标准化实战:香肠蒸豆米配方拆解与老鸡汤提鲜工艺

CookLikeHOC 蒸菜标准化实战&#xff1a;香肠蒸豆米配方拆解与老鸡汤提鲜工艺 【免费下载链接】CookLikeHOC &#x1f962;像老乡鸡&#x1f414;那样做饭。已添加2026年发布的《老乡鸡菜品溯源报告 2.0中新出现的菜品。主要部分于2024年完工&#xff0c;非老乡鸡官方仓库。文字…

作者头像 李华
网站建设 2026/9/12 21:01:07

OpenMAIC 服务端持久化的资产字节怎么备份、回收与保留?

OpenMAIC 服务端持久化的资产字节怎么备份、回收与保留&#xff1f; 【免费下载链接】OpenMAIC Open Multi-Agent Interactive Classroom — Get an immersive, multi-agent learning experience in just one click 项目地址: https://gitcode.com/GitHub_Trending/op/OpenMA…

作者头像 李华
网站建设 2026/9/12 21:00:36

AI智能体如何10倍提升营销效率:架构与应用

1. 项目概述&#xff1a;AI如何重构营销生产力当我在2023年首次部署AI营销系统时&#xff0c;团队用3天完成了过去20人月的客户分析工作。这不是未来幻想&#xff0c;而是正在发生的营销革命——通过AI智能体&#xff08;AI Agent&#xff09;技术&#xff0c;单个AI员工可同时…

作者头像 李华
网站建设 2026/9/12 21:00:11

树莓派GPS定位数据NB-IoT回传:串口接线、AT指令与坐标转换

简介&#xff1a;面向毕业设计、物联网课程设计或嵌入式开发学习者&#xff0c;本资源演示了树莓派结合NBIoT模块采集GPS数据并上传的完整项目。项目聚焦NBIoT低功耗广覆盖特性与GPS定位精度&#xff0c;涵盖设备连接、软件配置、数据解析、云端上传等工程环节&#xff0c;适合…

作者头像 李华