在Ubuntu系统下,用gcc/makefile对c语言程序的简单编译
文章目录
一、编译要求
- 请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。
-
请在ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行;
-
请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。
- 在任务4基础上,在ubuntu系统下用Makefile方式编程主程序。
二、编译
1.gcc
(1)使用代码
-c: 只编译不链接为可执行文件,编译器将输入的.c 文件编译为.o 的目标文件。
-o: <输出文件名>用来指定编译结束以后的输出文件名,如果不使用这个选项的话 GCC 默认编译出来的可执行文件名字为 a.out。
-g: 添加调试信息,如果要使用调试工具(如 GDB)的话就必须加入此选项,此选项指示编译的时候生成调试所需的符号信息。
-O: 对程序进行优化编译,如果使用此选项的话整个源代码在编译、链接的的时候都会进行优化,这样产生的可执行文件执行效率就高。
-O2: 比-O 更幅度更大的优化,生成的可执行效率更高,但是整个编译过程会很慢。
(2)编译程序
创建程序
用touch命令创建主次程序文件main1.c,sub1.c。
代码如下(示例):
touch main1.c
touch sub1.c
ubuntu实验截图
写入程序
首先,利用vim编辑文件,进入文件后,用i进入inset模式,编入代码
代码如下(main1.c):
#include<stdio.h>
int main()
{
int m=8,n=6;
float a;
a = x2x(m,n);
printf("%f",a);
return 0;
}
ubuntu实验截图
代码如下(sub1.c):
#include<stdio.h>
float x2x(int x,int y)
{
float z;
z = x*y;
return z;
}
ubuntu实验截图
(3)用gcc使用程序
将main1.c和sub1.c根据命令 gcc main1.c sub1.c -o test 生成一个test文件,然后输入./test
运行。
2.在windows环境下用Visual studio 2019编译
(1)sub1.c
在visual studio 2019中打开并创建一个文件,在头文件创建一个sub1.c,并将代码写入
(2)main1.c
在源文件中创建一个新建项后缀为cpp的,写入代码,并引用“sub1.c”
(3)运行结果
点击在windows环境下运行编译,结果如下
3.makefile
(1)makefile介绍
make是一个应用程序,解析源程序之间的依赖关系,根据依赖关系自动维护编译工作,执行宿主操作系统中的各种命令。
makefile是一个描述文件,定义一系列的规则来指定源文件编译的先后顺序
拥有特定的语法规则,支持函数定义和函数调用,能够直接集成操作系统中的各种命令。
(2)使用
用sudo apt-get install make
来安装
1.用touch创建makefile文件
2.用vim编辑makefile
3.使用
因为makefile中,所以touch sub1.h,并vim编辑一个相同内容,然后使用make命令
程序运行结果
总结
`本文主要提及了在ubuntu 18.04环境下用gcc和makefile命令简单编程,还有在windows环境下使用Visual Studio 2019下编辑的简单hello world程序