windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序

目录

前言

实验目的

实验准备

编译输出helloworld

使用gcc命令编译并且运行

1在Ubuntu中创建main.c sub1.h sub1.c

2通过gcc直接编译

3 运行

使用makefile进行编译运行 

1makefile基本用法

2编写makefile文件

总结


前言

实验目的

在Ubuntu系统下用C语言编写一个简单的输出 hello word 的程序,并编译有、运行之;

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

1请在ubuntu系统用gcc 命令行方式编译主程序main1.c 并运行; 

2请在windows系统下用你熟悉的编译工具编译主程序main1.c 并运行。

3在任务4基础上,在ubuntu系统下用Makefile方式编程主程序。

实验准备

首先通过自己熟悉的编译软件,在windows系统下编写出目的程序,同时进行编译运行。

笔者使用的是Dev-C++

#include 
#include 
#include"sub1.h"

int main()
{
	int a=10,b=20;            //定义x和y变量
	printf("%.2f\n",x2x(a,b));      //输出处理后的值,保留两位小数
	return 0;
}

初始的主程序main.c 

#ifndef __SUB1_H
#define __SUB1_H
#include
float x2x(int x,int y);      
#endif

sub1.h

通过ifdef保证在编译过程中不会出现未识别sub1.h的情况

#include "sub1.h"

float x2x(int x,int y)
{
	float qwq;
	qwq=(float)x*y;
	return qwq;
}

sub1.c子程序文件

x2x函数的目的则是计算乘积并输出保留两位小数

编译结果

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第1张图片

运行结果

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第2张图片

编译输出helloworld

首先使用touch命令创建文件

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第3张图片

输入gedit helloworld.c 命令进行编辑或直接双击输入代码并且保存

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第4张图片

输入命令gcc helloworld.c

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第5张图片

生成文件a.out

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第6张图片

 

最后输入./a.out 即可成功编译运行

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第7张图片

使用gcc命令编译并且运行

1在Ubuntu中创建main.c sub1.h sub1.c

首先通过快捷键ctrl+alt+t启动终端 输入vi进入vim文本编辑器 进入编辑模式输入main.c的代码,完成后进入命令模式输入

:w main.c

进行保存,同理创建sub1.h,sub1.c。 

2通过gcc直接编译

启动终端以此输入下列命令
gcc -c sub1.c(将sub1.c程序转换为目标文件sub1.o)
gcc main.c sub1.o -o main(编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件)


3 运行

执行./main命令,即可执行编译生成的main1程序

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第8张图片

使用makefile进行编译运行 

1makefile基本用法

最简单的Makefile文件长这样:

hellomake: hellomake.c hellofun.c
    gcc -o hellomake hellomake,c hellofun.c -I.

把这两行写入到一个名为Makefile或makefile的文件中,然后在terminal输入make,系统就会按照makefile文件中定义的规则编译你的代码。注意,make命令不带参数的话,会默认执行makefile文件中的第一条规则。此外,通过将命令依赖的文件列表放在:之后的第一行,make就知道如果其中的任何文件发生更改,就需要执行hellomake规则。这样就马上解决了第一个问题,不需要在terminal中上下翻找最后一个编译命令了。但是这样写,make仍然不能有效的只编译最新的更改。

2编写makefile文件

由于Ubuntu20.04无法新建空白文件,通过查阅资料,在终端输入

sudo gedit makefile 就会在home界面出现名为makefile的空白文件,将这个文件移入模板(Templates)文件夹就可以创建名为makefile的空白文件。

创建makefile空白文件,并进行编写,代码如下。

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第9张图片

 这是输入make前的home

这是输入make后的home 很显然多了一个main1

main1的输出结果如下

windows环境下的Ubuntu输出helloworld与通过gcc与makefile的方式编译c程序_第10张图片

总结

Ubuntu环境下,gcc编译直接明了,但对于多文件的处理,gcc就显得比较臃肿,所以makefile是一个不错的选择。

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