头文件:
too1.h
#ifndef too1_h__
#define too1_h__
void mytoo1(void);
#endif
too2.h
#ifndef too2_h__
#define too2_h__
void mytoo2(void);
#endif
~
程序:
main.c
#include "too1.h"
#include "too2.h"
#include <stdio.h>
int main()
{
mytoo1();
mytoo2();
return 0;
}
~
too1.c
#include <stdio.h>
#include "too1.h"
void mytoo1()
{
printf("mytoo1\n");
}
too2.c
#include <stdio.h>
#include "too2.h"
void mytoo2()
{
printf("mytoo2\n");
}
makefile:
版本1
mytool:main.o too1.o too2.o
gcc main.o too1.o too2.o -o mytool
main.o:main.c
gcc main.c -c -Wall -g -o main.o
too1.o:too1.c
gcc too1.c -c -Wall -g -o too1.o
too2.o:too2.c
gcc too2.c -c -Wall -g -o too2.o
clean:
rm *.o -rf
~
~
~
版本2
OBJS=main.o too1.o too2.o
CC=gcc //指定编译器
CFLAGS+=-c -Wall -g//编译 链接选项
mytool:$(OBJS)
$(CC) $(OBJS) -o mytool
main.o:main.c
$(CC) main.c $(CFLAGS) -o main.o
too1.o:too1.c
$(CC) too1.c $(CFLAGS) -o too1.o
too2.o:too2.c
$(CC) too2.c $(CFLAGS) -o too2.o
clean:
$(RM) *.o -rf
版本3
OBJS=main.o too1.o too2.o
CC=gcc //指定编译器
CFLAGS+=-c -Wall -g//编译 链接选项
mytool:$(OBJS)
$(CC) $^ -o $@//^上一句中被依赖的所有文件 @上一句的目标文件
main.o:main.c
$(CC) $^ $(CFLAGS) -o $@
too1.o:too1.c
$(CC) $^ $(CFLAGS) -o $@
too2.o:too2.c
$(CC) $^ $(CFLAGS) -o $@
clean:
$(RM) *.o -rf
~
~
~
版本4
OBJS=main.o too1.o too2.o
CC=gcc //指定编译器
CFLAGS+=-c -Wall -g//编译 链接选项
mytool:$(OBJS)
$(CC) $^ -o $@//^上一句中被依赖的所有文件 @上一句的目标文件
%.o:%.c //通配表示 由于语法一致
$(CC) $^ $(CFLAGS) -o $@
clean:
$(RM) *.o -rf
~