ubuntu系统下用C语言和Makefile方式分别进行编程

一、不同环境下C语言的编译

1.编写简单的Hello world程序

1)使用文本编辑器创建一个新的C文件。你可以使用 nano 或者 vim 等编辑器。例如,输入以下命令来创建一个名为 hello.c 的文件

nano hello.c

2)在打开的编辑器中,输入以下C语言代码:

#include <stdio.h>

int main() {
    printf("Hello World\n");
    return 0;
}

3)按 Ctrl + X,然后按 Y 确认保存,最后按 Enter 键来保存文件。

4)在终端输入以下命令:

gcc hello.c -o hello

5)输入以下命令来运行程序

./hello

2.编写c程序(使用nano进行编写)

1)编写main1.c

#include<stdio.h>
#include"sub1.h"
int main()
{
        int x=2,y=3;            //定义x和y变量
        printf("sum is:,%.2f\n",x2x(x,y));      //输出处理后的值,保留两位小数
        return 0;
}

2)编写子程序(sub1.h)

#ifndef __SUB1_H
#define __SUB1_H

#include<stdio.h>

float x2x(int x,int y);         //计算b除以a的结果

#endif

3)编写sub1.c

#include "sub1.h"

float x2x(int x,int y)
{
	float sum;
	sum=(float)y/x;
	return sum;
}

4)用gcc命令编译

  • gcc -c sub1.c
    

    作用:将sub1.c程序转换为目标文件sub1.o

  • gcc main1.c sub1.o -o main1

    作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件

  • ./main1

    作用:编译运行main1程序

运行结果如下:

3.Win11编写程序

这里使用的是dev c++

 1)编写main1.c,代码如下:

#include<stdio.h>
#include<iostream>
#include"sub1.h"
int main()
{
        int x=2,y=3;            //定义x和y变量
        printf("sum is:,%.2f\n",x2x(x,y));      //输出处理后的值,保留两位小数
        return 0;
}

2)编写sub1.h,代码如下:

#include<stdio.h>
float x2x(int x,int y)
{
	float sum;
	sum=(float)y/x;
	return sum;
}

运行结果如下:

二、Makefile方式进行编译主程序

 ‌Makefile‌是一种文本文件,用于描述软件项目的构建规则和依赖关系,通常用于自动化软件构建过程。Makefile的主要组成部分包括目标(Target)、依赖(Dependencies)和命令(Commands)‌。基本格式如下:

target: dependencies
    command//command前面为一个tab

 1)编写Makefile文件

使用nano编写,输入以下代码:

main1:sub1.o main1.c
        gcc main1.c sub1.o -o main1

sub1.o:sub1.c
        gcc -c sub1.c -o sub1.o

clean:
        rm *.o 

2) 使用Makefile编译c程序

  • 在源文件目录下执行命令make

  • 在源文件目录下执行命令make clean

三、总结

这次在Ubuntu系统上编写C语言并运行的实验,我使用了nano编写并运行和Makefile进行编译这两种生成可执行文件的方式,通过一步步编写程序使得我对Ubuntu上C语言编译更加熟练。在Ubuntu系统下使用C语言结合Makefile编程,让我深刻体会到了自动化构建工具的便利。通过编写Makefile,我能够轻松管理编译过程,只需一个make命令就能编译整个项目,大大简化了编译命令的输入。同时,Makefile的依赖管理确保了只有当源文件发生变化时,才会重新编译,提高了编译效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值