文章目录
- 前言
- 一、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 gcc5.安装编译程序必须软件包的列表信息
输入:
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);#endif3.创建主程序文件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 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环境下的程序开发提供有益的参考,为之后学习嵌入式开发打下基础。