终端编译makefile"/>
Linux下学C语言——第十五节 终端编译makefile
快捷键
touch main.c tool1.c tool1.h tool2.c tool2.h //创建这些文件
vim * -p //打开所有文件编辑
gt//切换vim内的页面
gcc *.c//全部编译
rm A //删除文件
vim makefile //make的文件
make //执行makefile文件
make clean //调用makefile文件中的clean函数
拷贝A到B:cp A B
编写的makefile文件:帮助项目解决因部分文件变化导致的编译困难
//目标文件:源文件
//生成工具gcc 源文件 -o 目标文件
mytool: main.o tool1.o tool2.o
gcc main.o tool1.o tool2.o -o mytool
//目标文件:源文件
//生成工具gcc 源文件 -汇编c -报错W -调试g -生成o 目标文件
main.o: main.c
gcc main.c -c -Wall -g -o main.o
tool1.o :tool1.c
gcc tool1.c -c -Wall -g -o tool1.o
tool2.o: tool2.c
gcc tool2.c -c -Wall -g -o tool2.o
//clean函数
//删除 所有 .o文件 执行文件 递归删除
clean:
rm *.o mytool -rf
简化://$^代替源文件
//$@代替目标文件
//$( )代替描述词
OBJS = main.o tool1.o tool2.o
CC = gcc
CFLAGS += -c -Wall -g
mytool: $(OBJS)
$(CC) $^ -o $@
main.o: main.c
$(CC) $^ $(CFLAGS) -o $@
tool1.o :tool1.c
$(CC) $^ $(CFLAGS) -o $@
tool2.o: tool2.c
$(CC) $^ $(CFLAGS) -o $@
clean:
$(RM) *.o mytool -rf
简化://把上述中间三行提取公式,%代替过程文件
//切记空格和tab空格不可缺
OBJS = main.o tool1.o tool2.o
CC = gcc
CFLAGS += -c -Wall -g
mytool: $(OBJS)
$(CC) $^ -o $@
%.o: %.c
$(CC) $^ $(CFLAGS) -o $@
clean:
$(RM) *.o mytool -rf
最终简化:
all:list
list:main.o list.o
$(CC) $^ -o $@
clean:
rm *.o list -rf
执行:
[tom@CentOS7 testmake]$ make
make: “mytool”是最新的。
[tom@CentOS7 testmake]$ make clean
rm -f *.o mytool -rf
[tom@CentOS7 testmake]$ make
gcc main.c -c -Wall -g -o main.o
gcc tool1.c -c -Wall -g -o tool1.o
gcc tool2.c -c -Wall -g -o tool2.o
gcc main.o tool1.o tool2.o -o mytool
[tom@CentOS7 testmake]$ ./mytool
tool1 print
tool2 print
更多推荐
Linux下学C语言——第十五节 终端编译makefile
发布评论