Ubuntu系统下C语言的编写及Makefile的应用

本文旨在通过在Ubuntu系统下对简单c语言程序的编写及运行,熟练gcc和makefile的使用

文章目录

  • 1. c语言环境的安装
  • 2. Ubuntu系统下编写 hello word 程序
  • 3. Ubuntu下C语言的应用
    • 3.1 Ubuntu下编译主程序main1.c和子程序sub1.c
    • 3.2 Windows系统下使用Dev-c++编译主程序
  • 4. 在Ubuntu系统下Makefile编程主程序
  • 5. 总结

1. c语言环境的安装

首先配置C语言环境,输入以下指令安装gcc。

sudo apt install gcc

然后输入以下语句检查gcc版本

gcc --version

2. Ubuntu系统下编写 hello word 程序

Ubuntu上常用的文本编辑器有vi\vim、gedit、nano,我采用nano来编写该程序,在终端输入以下语句后,会进入文本编辑模式,然后编写程序即可。

nano HelloWorld.c

编写以下程序

#include
int main()
{
     
printf("Hello World");
}

编写程序后,ctrl+o保存文件,会出现以下界面,若不需要更改文件名,回车即可,然后ctrl+x退出到终端。

在这里插入图片描述

输入以下语句编译HelloWorld.c

gcc HelloWorld.c

编译后输入./a.out 运行程序,a.out是编译后默认的可执行文件名,也可通过以下语句修改文件名

gcc HelloWorld.c -o [文件名]

下面是我运行程序后的截图

在这里插入图片描述

3. Ubuntu下C语言的应用

3.1 Ubuntu下编译主程序main1.c和子程序sub1.c

编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。

sub1.c代码如下:

float x2x(int a,int b)
{
     
return (float)(a*b);
}

main1.c代码如下:

#include
#include"sub1.c"
void main()
{
     
int x=5,y=4;
float s;
s=x2x(x,y);
printf("%f\n",s);
}

如上文所说,sub1.c及main1.c写好后,将main1.c生成可执行文件名,可得到如下图所示结果

Ubuntu系统下C语言的编写及Makefile的应用_第1张图片

3.2 Windows系统下使用Dev-c++编译主程序

使用Dev-c++编写的代码如下

#include
float x2x(int x,int y)
{
     
	return (float)(x*y);
}
int main()
{
     
	int x=5,y=4;
	float s;
	s=x2x(x,y);
	printf("%f\n",s);
}

编译并运行后结果如下:

Ubuntu系统下C语言的编写及Makefile的应用_第2张图片

通过比较,可以发现Ubuntu系统下使用gcc和Windows系统下使用Dev-c++的运行结果是一样的,因为Dev-c++在后台调用的也是gcc。

4. 在Ubuntu系统下Makefile编程主程序

在命令行中输入touch makefile创建makefile文件,然后使用nano、vi等文本编辑器打开makefile文件编写程序。

 touch makefile
 nano makefile

编写代码如下:

s3:main1.o sub1.o
        gcc -o s3 main1.o sub1.o
main1.o:main1.c
        gcc -c main1.c
sub1.o:sub1.c
        gcc -c sub1.c
clean:
        rm *.o

需要注意的是gcc前一定要使用tab,而不能用空格。

编写文件并保存后,在终端输入make,系统会生成可执行文件s3。

在这里插入图片描述

使用./运行之

在这里插入图片描述

5. 总结

通过在Ubuntu环境下对简单c语言程序的编译及运行,可熟悉Ubuntu系统下gcc和makefile的基本使用,为以后的深入学习打下基础。

你可能感兴趣的:(ubuntu,c语言,linux)