ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

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

初学嵌入式——使用ubuntu和Windows编译运行C语言程序 文章目录前言一、Ubuntu 系统安装和基础配置二、在Ubuntu系统中下载并配置c语言环境1.首先CtrlaltT进入终端2.新安装的ubuntu系统需要更新源3.安装vim4.安装gcc5.安装编译程序必须软件包的列表信息三、在ubuntu环境下编写helloworld1.编写程序2.编译程序3.运行程序四、编写一个主程序文件main1.c和一个子程序文件sub1.c1.创建子程序文件sub1.c2.创建头文件sub1.h3.创建主程序文件main1.c4.在Ubuntu下编译运行5.在Windows下编译运行五、Ubuntu系统下用Makefile方式编程主程序1.创建Makefile2.使用Makefile编译3.Makefile说明总结前言C 语言是一门经典的结构化编程语言可跨操作系统平台运行在嵌入式开发、底层开发领域应用广泛。在 Linux 开发环境中gcc 编译器、Makefile 工程管理工具是 C 项目开发最基础、最核心的工具。通过本次实验建立了跨平台 C 语言开发的基础认知不仅提升了自己的技术能力还对软件开发流程有了更深入的理解。一、Ubuntu 系统安装和基础配置通过虚拟机安装Ubuntu桌面版。由于我之前已经安装过Ubuntu20.04桌面版这里给出参考链接安装Ubuntu桌面版二、在Ubuntu系统中下载并配置c语言环境1.首先CtrlaltT进入终端2.新安装的ubuntu系统需要更新源输入:sudo apt-get update然后会要求输入你的密码3.安装vim输入:sudo apt-get install vim红框部分记得都输入Y就可以了4.安装gcc输入:sudo apt-get install gcc5.安装编译程序必须软件包的列表信息输入sudo apt-get install build-essential三、在ubuntu环境下编写helloworld1.编写程序打开终端使用文本编辑器如vim创建一个新的C语言源文件。这里以hello.c为例vimhello.c在编辑器中输入以下C语言代码#includestdio.hintmain(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.c1.创建子程序文件sub1.cvimsub1.c在sub1.c中编写函数floatx2x(inta,intb){//简单运算(ab)*2.5return(ab)*2.5;}2.创建头文件sub1.hvimsub1.h在sub1.h中声明函数#ifndefSUB1_H#defineSUB1_Hfloatx2x(inta,intb);#endif3.创建主程序文件main1.cvimmain1.c在main1.c中编写主程序#includestdio.h#includesub1.hintmain(){intnum110;intnum220;floatresultx2x(num1,num2);printf(计算结果: %.2f\n,result);return0;}4.在Ubuntu下编译运行# 编译 gcc main1.c sub1.c-o program# 运行./program运行结果5.在Windows下编译运行1.打开Dev-C2. 创建新项目添加main1.c和sub1.c文件3.编译运行项目五、Ubuntu系统下用Makefile方式编程主程序1.创建MakefilevimMakefile编写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 program2.使用Makefile编译# 编译make# 运行./program# 清理编译文件makeclean编译结果3.Makefile说明•CC gcc: 指定使用的编译•CFLAGS -Wall: 编译选项开启所有警告•program: main1.o sub1.o: 指定目标文件依赖关系•clean: 清理编译生成的文件优点增量编译只重新编译修改过的源码文件无需全部重编译项目越大越节省时间。统一编译配置CC、CFLAGS集中定义修改编译参数只需改动一处。代码规范检查-Wall开启警告提前发现代码潜在错误。一键编译与清理简化多文件工程的重复编译操作。总结通过本次 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环境下的程序开发提供有益的参考为之后学习嵌入式开发打下基础。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进