boa源码分析(1)--Makefile

2024-02-15 00:58
文章标签 分析 源码 makefile boa

本文主要是介绍boa源码分析(1)--Makefile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

makefile yacc include gcc cgi flex
[javascript]  view plain copy
  1. # Generated automatically from Makefile.in by configure.  
  2. # $Id: Makefile.in,v 1.59 2002/03/24 22:20:19 jnelson Exp $  
  3. //本makefile 由autotools生成  
  4. .SUFFIXES:  
  5. .SUFFIXES: .o .c //去掉原后缀,添加新后缀  
  6. .PHONY: clean mrclean distclean depend all dist //伪目标  
  7.   
  8. GCC_FLAGS = -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wcast-qual\  
  9.   -Wtraditional\  
  10.   -Wshadow\  
  11.   -Wconversion\  
  12.   -Waggregate-return\  
  13.   -Wmissing-prototypes\  
  14.   -Wnested-externs\  
  15.   -Wall \  
  16.   -Wundef -Wwrite-strings -Wredundant-decls -Winline  
  17.   
  18.   
  19. srcdir = .  
  20. VPATH = .:./../extras   //如果依赖文件或目标文件在当前目录下没找到的话,就到这两个目录来找(这两个目录由冒号分隔)  
  21. #LDFLAGS =  -g  
  22. LIBS =    
  23. CFLAGS += -pipe -Wall -I.  
  24.  
  25. # Change these if necessary  
  26.   
  27. YACC = bison -y //yacc是个语法分析器   生成的文件后缀为.Y  
  28. LEX = flex //词法分析器,生成的文件后缀为.L  
  29. #CC = arm-linux-gcc   
  30. #CPP = arm-linux-gcc -E  
  31.   
  32. SOURCES = alias.c boa.c buffer.c cgi.c cgi_header.c config.c escape.c \  
  33.     get.c hash.c ip.c log.c mmap_cache.c pipe.c queue.c read.c \  
  34.     request.c response.c select.c signals.c util.c sublog.c  
  35.   
  36. OBJS = y.tab.o lex.yy.o $(SOURCES:.c=.o) timestamp.o //$(SOURCES:.c=.o)用了替换,将SOURCES中的.c替换成了.o   
  37. //all是伪目标,默认目标   
  38. all:    boa boa_indexer  
  39.     rm -rf $(OBJS)  
  40.     chmod +x boa  
  41.     @echo "build boa finish."  
  42.   
  43. boa:    $(OBJS)  
  44.     $(CC) -o $@  $^ $(LDFLAGS) $(LIBS) //$@ $^  $?  $<   $*都是自动化变量  
  45.       
  46. boa_indexer:    index_dir.o escape.o     
  47.     $(CC) -o $@  $^ $(LDFLAGS) $(LIBS)  
  48.   
  49. clean:  
  50.     rm -f $(OBJS) boa core lex.yy.c y.tab.c y.tab.h *~ boa_indexer index_dir.o *.d    
  51.       
  52. distclean:  mrclean  
  53.   
  54. mrclean:    clean  
  55.     rm -f config.status config.cache config.h Makefile config.log  
  56.  
  57. # parser dependencies  
  58.   
  59. y.tab.c y.tab.h:    boa_grammar.y  
  60.     $(YACC) -d $^  
  61.   
  62. lex.yy.c:   boa_lexer.l  
  63.     $(LEX) $^  
  64.  
  65. # timestamp  
  66.   
  67. timestamp.o:    $(SOURCES) boa_grammar.y boa_lexer.l  
  68. // 用gcc -MM可以生成源文件的依赖关系,.depend文件原来都有了,可以make depend重新制作   
  69. # depend stuff  
  70. .depend:  
  71.     $(CPP) -MM $(SOURCES) > .depend  // ">"重定向  
  72.           
  73. depend:  
  74.     -rm -f .depend  
  75.     $(MAKE) .depend  
  76.           
  77. include .depend  
  78.  
  79. # tags  
  80. tags:   $(SOURCES)  //更新所有的目标,以备完整地重编译使用。  
  81.     ctags -o tags $^ *.h  
  82.  
  83. # dist  
  84. dist:  
  85.     $(MAKE) clean  
  86.     ./makedist.sh  
  87.          
  88. # object dump  
  89. boa.objdump:    boa   
  90.     objdump --disassemble-all --source boa > $@  

这篇关于boa源码分析(1)--Makefile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/710043

相关文章

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Java多种文件复制方式以及效率对比分析

《Java多种文件复制方式以及效率对比分析》本文总结了Java复制文件的多种方式,包括传统的字节流、字符流、NIO系列、第三方包中的FileUtils等,并提供了不同方式的效率比较,同时,还介绍了遍历... 目录1 背景2 概述3 遍历3.1listFiles()3.2list()3.3org.codeha

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺