}
return m;
}
tool.h
#ifndef _TOOL_H
#define _TOOL_H
int find_max(int arr[],int n);
#endif
mian.c
#include <stdio.h>
#include “tool.h”
int main(){
int arr[5] = {1,5,10,2,3};
int m = find_max(arr,5);
printf(“%d\n”,m);
return 0;
}
直接编译:
gcc tool.c main.c -o main
但是这样效率低,并且如果类似的tool.c
很多的话,不好编写
Makefile
:
main : main.c tool.o
gcc main.c tool.o -o main
tool.o : tool.c
gcc -c tool.c # 直接编译成 .o 文件
可以发现生成了.o的中间文件,我们可以对Makefile文件进行操作,使得删除中间文件
main : main.c tool.o
gcc main.c tool.o -o main
tool.o : tool.c
gcc -c tool.c # 直接生成.o文件
clean :
rm tool.o
bar.c
#include “bar.h”
int find_min(int arr[],int n){
int i;
int m = arr[0];
for(i = 0;i < n;i++){
if(arr[i] < m) m = arr[i];
}
return m;
}
bar.h
#ifndef _BAR_H
#define _BAR_H
int find_min(int arr[],int n);
#endif
foo.c
#include “foo.h”
int find_max(int arr[],int n){
int i;
int m = arr[0];
for(i = 0;i < n;i++){
if(arr[i] > m) m = arr[i];
}
return m;
}
foo.h
#ifndef _FOO_H
#define _FOOL_H
int find_max(int arr[],int n);
#endif
main.c
#include “foo.h”
#include “bar.h”
#include <stdio.h>
int main(){
int arr[] = {1,8,3,4,5};
int min = find_min(arr,5);
int max = find_max(arr,5);
printf(“min = %d\n”,min);
printf(“max = %d\n”,max);
return 0;
}
Makefile
main : main.c foo.o bar.o
gcc main.c foo.o bar.o -o main
foo.o : foo.c
gcc -c foo.c
bar.o : bar.c
gcc -c bar.c
clean:
rm foo.o bar.o
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zqyGfR43-1633941535418)(https://i.loli.net/2021/10/11/Zt8kFXTjxubsGWd.png)]
Makefile中也支持 变量
这种操作
CC = gcc
main : main.c foo.o bar.o
$(CC) main.c foo.o bar.o -o main
foo.o : foo.c
$(CC) -c foo.c
bar.o : bar.c
$(CC) -c bar.c