linux 环境下头文件声明函数后使用makefile编译文件

本文介绍如何在Linux环境下通过Makefile实现C语言程序的模块化编程,包括多个C文件和头文件的组织方式,以及如何编译和运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚开始使用linux环境编程时,遇到的一个难办问题,就是当时觉得在一个c文件里实现太多函数特别繁琐,并且后期因为函数实现部分篇幅太长,使得整个c很难看清楚思路,后来想着函数单独放在一个c文件里,没想到编译出了问题,查资料发现要用makefile,当时写了日志,把当时代码po上来做一个参考。

实例
此处例子涉及三个文件,两个c文件,一个头文件,分别为:fun.c a.c fun.h
1.fun.h是定义函数名的头文件

//fun.h
#ifndef _FUN_H
#define _FUN_H
#include"fun.h"
int fun1(int a,int b);
void fun2();
#endif

2.fun.c是实现fun.h里定义了的函数

//fun.c
#include<stdio.h>
#include"fun.h"
int fun1(int a,int b){
    return a+b;
}
void fun2(){
    printf("fun2 is ok!\n");
}

3.a.c是调用fun里的函数的主文件

//a.c
#include<stdio.h>
#include"fun.h"
int main(){
    int c;
    int a=2,b=6;
    c=fun1(a,b);
    printf("a=%d b=%d\n a+b=%d\n",a,b,c);
    fun2();
    return 0;
}

在同一个文件夹里创建好这三个文件后(我放在~/MINEcode/exm文件夹里)
为了方便一同编译,在这个文件夹里同时创建一个文件,名为makefile(注:文件名一定要是这个,make默认编译的就是这个名字的文件)

//makefile
A:fun.o a.o 
    gcc -o A fun.o a.o
fun.o:fun.c fun.h
    gcc -c fun.c
a.0:a.c fun.h
    gcc -c a.c
clean:
    rm A fun.o a.o

保存后,在shell端执行以下命令

$ cd ~/MINEcode/exm
$ make

(显示gcc相关编译语句)

$ ./A

(./A是因为我在makefile文件内就把编译后的命令命名为A,这个文件名可以随自己的makefile文件自己修改)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值