目录
1在Ubuntu中创建main.c sub1.h sub1.c
前言
实验目的
在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 <stdio.h>
#include <stdlib.h>
#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<stdio.h>
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函数的目的则是计算乘积并输出保留两位小数
编译结果
运行结果
编译输出helloworld
首先使用touch命令创建文件
输入gedit helloworld.c 命令进行编辑或直接双击输入代码并且保存
输入命令gcc helloworld.c
生成文件a.out
最后输入./a.out 即可成功编译运行
使用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程序
使用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空白文件,并进行编写,代码如下。
这是输入make前的home
这是输入make后的home 很显然多了一个main1
main1的输出结果如下
总结
Ubuntu环境下,gcc编译直接明了,但对于多文件的处理,gcc就显得比较臃肿,所以makefile是一个不错的选择。