boa-0.94.13编译和学习

拿到boa源代码以后,进入src目录,

执行:sudo ./configure

执行:make

zx@zx:~/test/web_server/boa-0.94.13/src$ make
bison -y  -d boa_grammar.y
gcc  -g -O2 -pipe -Wall -I.   -c -o y.tab.o y.tab.c
y.tab.c: 在函数‘yyparse’中:
y.tab.c:1341:7: 警告: 隐式声明函数‘yylex’ [-Wimplicit-function-declaration]
flex  boa_lexer.l
gcc  -g -O2 -pipe -Wall -I.   -c -o lex.yy.o lex.yy.c
boa_lexer.l: 在函数‘yylex’中:
boa_lexer.l:82:2: 警告: 隐式声明函数‘yyerror’ [-Wimplicit-function-declaration]
boa_lexer.l: 在文件作用域:
lex.yy.c:1292:17: 警告: ‘yyunput’定义后未使用 [-Wunused-function]
lex.yy.c:1333:16: 警告: ‘input’定义后未使用 [-Wunused-function]
gcc  -g -O2 -pipe -Wall -I.   -c -o alias.o alias.c
gcc  -g -O2 -pipe -Wall -I.   -c -o boa.o boa.c
gcc  -g -O2 -pipe -Wall -I.   -c -o buffer.o buffer.c
gcc  -g -O2 -pipe -Wall -I.   -c -o cgi.o cgi.c
gcc  -g -O2 -pipe -Wall -I.   -c -o cgi_header.o cgi_header.c
gcc  -g -O2 -pipe -Wall -I.   -c -o config.o config.c
gcc  -g -O2 -pipe -Wall -I.   -c -o escape.o escape.c
gcc  -g -O2 -pipe -Wall -I.   -c -o get.o get.c
get.c: 在函数‘index_directory’中:
get.c:509:10: 警告: 忽略声明有 warn_unused_result 属性的‘chdir’的返回值 [-Wunused-result]
gcc  -g -O2 -pipe -Wall -I.   -c -o hash.o hash.c
gcc  -g -O2 -pipe -Wall -I.   -c -o ip.o ip.c
gcc  -g -O2 -pipe -Wall -I.   -c -o log.o log.c
gcc  -g -O2 -pipe -Wall -I.   -c -o mmap_cache.o mmap_cache.c
mmap_cache.c: 在函数‘find_mmap’中:
mmap_cache.c:70:9: 警告: 将一个指针转换为大小不同的整数 [-Wpointer-to-int-cast]
gcc  -g -O2 -pipe -Wall -I.   -c -o pipe.o pipe.c
gcc  -g -O2 -pipe -Wall -I.   -c -o queue.o queue.c
gcc  -g -O2 -pipe -Wall -I.   -c -o read.o read.c
gcc  -g -O2 -pipe -Wall -I.   -c -o request.o request.c
request.c: 在函数‘get_request’中:
request.c:84:17: 警告: 传递‘accept’的第 3 个参数给指针时,目标与指针符号不一致 [-Wpointer-sign]
/usr/include/x86_64-linux-gnu/sys/socket.h:214:12: 附注: 需要类型‘socklen_t * __restrict__’,但实参的类型为‘int *’
request.c:137:33: 警告: 传递‘getsockname’的第 3 个参数时在不兼容的指针类型间转换 [默认启用]
/usr/include/x86_64-linux-gnu/sys/socket.h:119:12: 附注: 需要类型‘socklen_t * __restrict__’,但实参的类型为‘size_t *’
request.c:171:13: 警告: 传递‘getsockopt’的第 5 个参数时在不兼容的指针类型间转换 [默认启用]
/usr/include/x86_64-linux-gnu/sys/socket.h:190:12: 附注: 需要类型‘socklen_t * __restrict__’,但实参的类型为‘size_t *’
request.c: 在函数‘free_request’中:
request.c:361:13: 警告: 忽略声明有 warn_unused_result 属性的‘read’的返回值 [-Wunused-result]
gcc  -g -O2 -pipe -Wall -I.   -c -o response.o response.c
gcc  -g -O2 -pipe -Wall -I.   -c -o select.o select.c
gcc  -g -O2 -pipe -Wall -I.   -c -o signals.o signals.c
signals.c: 在函数‘sigint’中:
signals.c:193:10: 警告: 忽略声明有 warn_unused_result 属性的‘chdir’的返回值 [-Wunused-result]
signals.c: 在函数‘sigterm_stage2_run’中:
signals.c:144:10: 警告: 忽略声明有 warn_unused_result 属性的‘chdir’的返回值 [-Wunused-result]
signals.c: 在函数‘sigbus’中:
signals.c:119:10: 警告: 忽略声明有 warn_unused_result 属性的‘chdir’的返回值 [-Wunused-result]
signals.c: 在函数‘sigsegv’中:
signals.c:103:10: 警告: 忽略声明有 warn_unused_result 属性的‘chdir’的返回值 [-Wunused-result]
gcc  -g -O2 -pipe -Wall -I.   -c -o util.o util.c
util.c: 在函数‘get_commonlog_time’中:
util.c:100:1: 错误: 毗连“t”和“->”不能给出一个有效的预处理标识符
make: *** [util.o] 错误 1

解决办法:修改compat.h
120 //#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
121 #define TIMEZONE_OFFSET(foo)  foo->tm_gmtoff


再次执行:make ,就编译完成了,没有在报错。

你可能感兴趣的:(开源软件,boa)