1、编译单个文件
main: main.c
gcc main.c -o main
2、同时编译2个文件
main: main.c tool.c
gcc tool.c main.c -o main
3、通过.o中间文件,同时编译两个文件
main: main.c tool.o
gcc tool.o main.c -o main
tool.o: tool.c
gcc -c tool.c
4、删除文件
main: main.c tool.o
gcc tool.o main.c -o main
tool.o: tool.c
gcc -c tool.c
clean:
rm *o main
5、同时编译多个文件
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 *o main
6、设置变量
CC = gcc
CFLAG = -lm -Wall -g
main: main.c foo.o bar.o
$(CC) $(CFLAG) main.c foo.o bar.o -o main
foo.o: foo.c
$(CC) $(CFLAG) -c foo.c
bar.o: bar.c
$(CC) $(CFLAG) -c bar.c
clean:
rm *o main
7、生成多个可执行文件
CC = gcc
CFLAG = -lm -Wall -g
all: main_max main_min
main_max: main_max.c foo.o
$(CC) $(CFLAG) main_max.c foo.o -o main_max
main_min: main_min.c bar.o
$(CC) $(CFLAG) main_min.c bar.o -o main_min
foo.o: foo.c
$(CC) $(CFLAG) -c foo.c
bar.o: bar.c
$(CC) $(CFLAG) -c bar.c
clean:
rm *o main_max main_min
测试代码
main_min.c
#include <stdio.h>
#include "bar.h"
int main (){
int arr[5] = {1,8,3,6,4};
int n = 5;
int min= findMin(arr,n);
printf("min num: %d\n",min);
return 0;
}
main_max.c
#include <stdio.h>
#include "foo.h"
int main (){
int arr[5] = {1,8,3,6,4};
int n = 5;
int max = findMax(arr,n);
printf("max num: %d\n", max);
return 0;
}
foo.h
int findMax(int arr[], int n);
foo.c
#include "foo.h"
int findMax(int arr[], int n){
int max = arr[0];
for (int i = 0; i < n; i++)
{
if (arr[i] > max)
{
max = arr[i];
}
}
return max;
}
bar.h
int findMin(int arr[], int n);
bar.c
#include "bar.h"
int findMin(int arr[], int n){
int min = arr[0];
for (int i = 0; i < n; i++)
{
if (arr[i] < min)
{
min = arr[i];
}
}
return min;
}