实验报告:在虚拟机中安装 Ubuntu 系统、编写 C 程序并使用 Makefile 进行编译
一、实验目的
- 熟练掌握在虚拟机中安装 Ubuntu 系统,并设置国内源。
- 学习在 Ubuntu 系统中使用
gcc
编译简单的 C 程序。 - 学会创建和使用
Makefile
文件以自动化管理 C 程序的编译过程。 - 掌握 Markdown 格式的报告撰写方法。
二、实验环境
- 操作系统:Windows + Ubuntu 18.04(或更高版本)
- 虚拟机软件:Vmware / VirtualBox
- 开发工具:
nano
编辑器、gcc
编译器 - 编程语言:C语言
- Markdown 编辑器:Typora
三、实验步骤
第一步:安装 Ubuntu 系统并配置国内源
-
安装 Ubuntu 系统
使用虚拟机软件(如 VMware 或 VirtualBox)创建一个虚拟机,并安装 Ubuntu 18.04 或更高版本的桌面版系统。 -
配置国内源
默认情况下,Ubuntu 系统使用国外的源,下载速度较慢。可以通过修改/etc/apt/sources.list
文件来更换为国内源,例如清华源。配置步骤:
- 打开终端,使用
sudo
和nano
命令打开源文件:sudo nano /etc/apt/sources.list
- 将文件内容替换为以下清华源(这里以 Ubuntu 18.04
bionic
为例):deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
- 保存并退出,运行以下命令更新软件包列表:
sudo apt-get update
第二步:编写并运行简单的 C 程序
- 创建并编辑
hello.c
文件
在终端中输入以下命令,用nano
编辑器创建并编辑hello.c
文件:
在文件中输入以下代码:nano hello.c
#include <stdio.h> int main() { printf("Hello, World!\n"); return 0; }
- 编译并运行程序
在终端中编译和运行该程序:
运行后应输出gcc hello.c -o hello ./hello
Hello, World!
。第三步:编写
main1.c
和sub1.c
文件 -
编写
sub1.c
创建sub1.c
文件,并编写包含一个算术运算函数x2x
的代码:nano sub1.c
输入以下代码:
#include <stdio.h> float x2x(int a, int b) { return (float)(a + b); }
-
编写
main1.c
创建main1.c
文件,并编写主程序调用x2x
函数:nano main1.c
输入以下代码:
#include <stdio.h> extern float x2x(int a, int b); int main() { int a = 5, b = 10; float result = x2x(a, b); printf("Result: %.2f\n", result); return 0; }
-
编译并运行
使用gcc
编译两个文件,并生成可执行文件:gcc main1.c sub1.c -o main_program ./main_program
如果程序正常运行,将输出
Result: 15.00
。 -
实验结果
第四步:创建 Makefile
-
编写 Makefile
在项目目录下创建一个名为Makefile
的文件:nano Makefile
将以下内容写入
Makefile
:TARGET = main_program SRCS = main1.c sub1.c CC = gcc CFLAGS = -Wall OBJS = $(SRCS:.c=.o) all: $(TARGET) $(TARGET): $(OBJS) $(CC) $(CFLAGS) -o $(TARGET) $(OBJS) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ clean: rm -f $(OBJS) $(TARGET)
-
使用 Makefile 编译和清理项目
- 编译程序:
make
- 运行生成的可执行文件:
./main_program
- 清理生成的中间文件:
make clean
实验结果
- 编译程序:
- 打开终端,使用
四、实验总结
通过本次实验,我学习了如何在虚拟机中安装并配置 Ubuntu 系统,并熟悉了基本的 Linux 命令和 nano
编辑器的使用。在 C 语言编程方面,我掌握了如何分文件编写程序,并使用 Makefile
进行自动化编译。此外,通过编写 Markdown 格式的实验报告,我进一步熟悉了 Markdown 的使用方法。