Ubuntu系统使用gcc和makefile编译c程序
本次实验完成了Ubuntu与Windows系统下C语言程序的编写与编译。在Ubuntu中,成功编写并通过gcc编译运行“Hello World”单文件程序、多文件(main1.c与sub1.c)程序,还利用Makefile实现多文件自动化编译;在Windows中,通过Visual Studio2022编译运行多文件程序,各场景均得到正确结果。通过这次实验学习到了跨系统编译操作差异,掌握了多文件编译
一、在Ubuntu系统中进行简单的程序编写
1.编写程序
#include<stdio.h>
int main() { printf("Hello World\n"); return 0; }
2.gcc的下载及代码的编译运行
I.编写完代码后想使用gcc进行编译时出现报错

(此处文件名不是hello.c是因为我是先进行的多文件编译)
II.通过报错提示可知,输入下方代码以安装gcc
![]()
III.输入代码并按下回车后,会询问用户是否继续运行,输入y并回车

IV.等待安装完成后,重新使用gcc进行编译运行,得到输出“Hello World”

二、使用gcc进行多文件的编程
1.编写程序
main.c:
#include "sub1.h"
int main() {
int x = 2, y = 9;
printf("%.2f\n", x2x(x, y));
return 0;
}
sub1.c:
#include "sub1.h"
float x2x(int a, int b){
float ans;
ans = (float)b / a;
return ans;
}
sub1.h:
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a, int b);
#endif
2.使用gcc对代码进行编译
使用gcc -c sub1.c命令将sub1.c程序转换为sub1.o
使用gcc main1.c sub1.o -o main1命令将main1.c文件编译成main1.o文件,然后链接sub1.o文件生成main1可执行文件
使用./main1命令执行程序,等待其输出结果

三、使用Windows系统编程
使用软件:Visual Studio 2022



将文件保存并编译,等待其输出结果

与Ubuntu中输出的结果一致
四、使用makefile编译
makefile使用前也需要安装,与gcc的安装同理

输入以下代码创建makefile文件
$ nano makefile
编译makefile文件
目标文件:main1(最终可执行文件)
main1: main1.o sub1.o gcc main1.o sub1.o -o main1
编译main1.c为目标文件main1.o
main1.o: main1.c gcc -c main1.c -o main1.o
编译sub1.c为目标文件sub1.o
sub1.o: sub1.c gcc -c sub1.c -o sub1.o
清理命令:删除所有目标文件和可执行文件(make clean 调用)
clean: rm -f main1.o sub1.o main1
编写完成后按下快捷键ctrl+x,输入y并回车以保存
输入并执行命令make,即可编译出可执行文件main1

使用./main1命令执行该文件,等待其输出结果
![]()
使用make clean命令即可删除所有文件
![]()
五、总结
本次实验完成了Ubuntu与Windows系统下C语言程序的编写与编译。在Ubuntu中,成功编写并通过gcc编译运行“Hello World”单文件程序、多文件(main1.c与sub1.c)程序,还利用Makefile实现多文件自动化编译;在Windows中,通过Visual Studio2022编译运行多文件程序,各场景均得到正确结果。通过这次实验学习到了跨系统编译操作差异,掌握了多文件编译需匹配函数声明定义,Makefile可简化复杂项目编译等知识。
更多推荐



所有评论(0)