auto/lib/make脚本主要用于编译nginx所依赖的一些外部库文件。
1. auto/lib/make脚本
脚本内容如下:
1) PCRE库
在auto/options中,我们通过在执行configure传入:
--with-pcre=../pcre-8.40
因此这里会执行auto/lib/pcre/make脚本。
2) MD5库
在auto/options脚本中,MD5
默认被初始化为NONE
。我们这里使用Openssl中的MD5。因此并不会执行对应的make脚本。
3) SHA1库
在auto/options脚本中SHA1
默认被初始化为NONE
;但是在auto/lib/conf脚本中会被设置为YES
,使用Openssl中的SHA1
。因此并不会执行对应的make脚本。
4) Openssl库
在auto/options脚本中OPENSSL
默认被初始化为NONE
。这里使用系统提供的openssl,并不需要额外执行对应的make脚本。
5) ZLIB库
在auto/options中,我们通过在执行configure传入:
--with-zlib=../zlib-1.2.11
因此这里会执行auto/lib/zlib/make脚本。
6) libatomic库
在auto/options脚本中,NGX_LIBATOMIC
默认被初始化为NO
,此后也并未做相应修改。因此并不需要执行对应的make脚本。
7) PERL库
在auto/options脚本中,USE_PERL
默认被初始化为NO
,此后也并未做相应修改。因此并不需要执行对应的make脚本。
2. auto/lib/pcre/make脚本
脚本内容如下:
我们当前NGX_CC_NAME
被置为gcc
,因此变量ngx_makefile
为空。因此会执行else部分代码声场Makefile:
向objs/Makefile文件写入:
3. auto/lib/zlib/make脚本
脚本内容如下:
我们当前NGX_CC_NAME
被置为gcc
,因此变量ngx_makefile
为空。
我们在configure脚本中通过如下命令:
NGX_SYSTEM=`uname -s 2>/dev/null`
NGX_RELEASE=`uname -r 2>/dev/null`
NGX_MACHINE=`uname -m 2>/dev/null`
echo " + $NGX_SYSTEM $NGX_RELEASE $NGX_MACHINE"
NGX_PLATFORM="$NGX_SYSTEM:$NGX_RELEASE:$NGX_MACHINE";
求得NGX_PLATFORM
值为:
# echo $NGX_PLATFORM
Linux:4.10.0-35-generic:i686
此处,ZLIB_ASM
在auto/options默认被初始化为NO
,因此执行如下脚本:
向objs/Makefile文件写入: