Makefile 的学习
来源:互联网 发布:如何编制软件 编辑:程序博客网 时间:2024/05/01 17:58
一,makefile是linux上的编译的工具
源码: makefile是根据时间来判断文件是否更新了, 如果更新了就是编译它
makefile的编写:依据是 目标 -> 依赖->命令 三步骤
二,简单的编写makefile的几个步骤
# 目标:依赖# (tab) 命令#==================makefile 编写方法一:===========================main:main.c fun1.c fun2.c sum.c gcc -o main main.c fun1.c fun2.c sum.c -I./#===================makefile 编写方法二:==========================#目标文件:依赖.o文件main:main.o fun1.o fun2.o sum.o gcc main.o fun1.o fun2.o sum.o -o main#依赖.o文件:检测文件的时间差 头文件的依赖文件main.o:main.c gcc -c main.c -o main.o -I./fun1.o:fun2.c gcc -c fun1.c -o fun1.o fun2.o:fun2.c gcc -c fun2.c -o fun2.osum.o:sum.c gcc -c sum.c -o sum.o#========================makefile 方法三:=======================#变量使用target = mainobject = main.o fun1.o fun2.o sum.oCC = gcc#头文件CPPFLAGS = -I./#生成可执行文件 $@$(target):$(object) $(CC) -o $@ $^#依赖文件检测 **模式匹配**%.o:%.c $(CC) -o $@ -g -c $< $(CPPFLAGS) #========================makefile 方法四:======================#函数的使用#源文件.csrc = $(wildcard ./*c)obj = $(patsubst %.c, %.o, $(src))#生成文件名target = mainCC = gcc#头文件CPPFLAGS = -I./#生成可执行文件$(target):$(obj) gcc -o $@ $^#模式匹配%.o:%.c gcc -o $@ -c $< $(CPPFLAGS) #=========================makefile 方法⑤=========================#加clean#找到所有的.c文件src = $(wildcard ./*.c)obj = $(patsubst %.c, %.o, $(src))#生成可执行文件target = mainCC = gcc#头文件指明CPPFLAGS = -I./#生成可执行文件方法:$(target):$(obj) $(CC) -o $@ $^#模式匹配%.o:%.c $(CC) -o $@ -c $< $(CPPFLAGS)#清空二进制文件操作.PHONY:cleanclean:# echo "^_^陈丽^_^王蓉^_^" rm -f $(obj)
* 运行效果图*
三,编译两个可执行文件的makefile的编写
.SUFFIXES: .c .oCC = gccSRCS1 = server.cSRCS2 = client.cOBJS1 = $(SRCS1:.c = .o)OBJS2 = $(SRCS2:.c = .o)EXE1 = serverEXE2 = clientall: $(OBJS1) $(OBJS2) $(CC) -o $(EXE1) $(OBJS1) -Wall -g $(CC) -o $(EXE2) $(OBJS2) -Wall -g @echo '^_^ ^_^ 陈丽 ^_^ ^_^'#模式匹配%.c%.o: $(CC) -Wall -g -o $@ -c $^#clean 清空二进制文件clean: -rm -f $(OBJS) -rm -f core*
四,生成动态库的制作
src1 = $(wildcard ./src/*.c)# 第一参数是第二个参数的生成文件obj1 = $(patsubst ./src/%.c, ./obj/%.o, $(src1))SRCS = main.cEXE = maintarget = ./lib/libsongli.soCC = gccCPPINCLUDE = -I ./includeCPPlib = -L ./lib/CPPSO = -lsongli#主程序ALL:$(target) $(CC) -o $(EXE) $(SRCS) $(CPPINCLUDE) $(CPPlib) $(CPPSO)#动态库的$(target):$(obj1) $(CC) -shared -o $(target) $(obj1) #模式匹配./obj/%.o :./src/%.c $(CC) -c $< -o $@ -fPIC $(CPPINCLUDE)#清除工作.PHONY:cleanclean: @echo "^_^songli^_^大家好^_^" -rm -rf $(obj1) $(EXE) $(target)
阅读全文
0 0
- 关于Makefile的学习
- makefile的学习
- Makefile的学习笔记
- 学习 Linux的makefile
- 学习 Linux的makefile
- Makefile的学习笔记
- MakeFile的学习
- makefile的学习
- 简单的makefile学习
- makefile的学习
- makefile的学习使用
- 学习makefile 的网址
- DPDK的Makefile学习
- 关于Makefile的学习
- 9.makefile的学习
- Makefile 的学习
- Makefile的简单学习
- Makefile学习之Makefile的规则
- 2017.10.16
- Jenkins基础入门-17-什么是Blue Ocean
- Linux系统知识小结(四)
- python3 Django TemplateDoesNotExist at /
- ★ Eclipse Debug 界面应用详解——Eclipse Debug不为人知的秘密
- Makefile 的学习
- 配置IP,putty,xshell远程登录和密钥登录
- Oracle数据库:左右连接、自然连接、交叉连接、统计函数以及分组查询(having子句)
- 实验C—5 任意十进制数转化为二进制
- Codeforces 876B. Divisiblity of Differences
- for 语句的更多细节
- 进程和线程关系及区别 (实用)
- python 如何将CSV转换为json
- [luogu1768]天路