首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

解剖Nginx·自动脚本篇(六)编译器名称变量脚本 auto/cc/name

2012-06-30 
解剖Nginx·自动脚本篇(6)编译器名称变量脚本 auto/cc/name解剖 Nginx·自动脚本篇(6)编译器名称变量脚本 au

解剖Nginx·自动脚本篇(6)编译器名称变量脚本 auto/cc/name

解剖 Nginx·自动脚本篇(6)编译器名称变量脚本 auto/cc/name
  • Author: Poechant
  • Blog:?blog.CSDN.net/Poechant
  • Email: zhongchao.ustc#gmail.com (#->@)
  • Date: March 12th, 2012
  • Copyright ? 柳大·Poechant

    回顾变量 CC

    最初是在auto/options脚本中初始化的:

    CC=${CC:-gcc}

    1 C Compiler 的 feature

    Windows 平台的编译器叫做MSVC,其他平台的都统称为C Compiler

    1.1 获取编译器参数

    该脚本并不复杂,首先通过NGX_PLATFORM变量来判断是否是win32(该变量是在auto/options中初始化的),如果是,则:

    ngx_feature="C compiler"ngx_feature_name=ngx_feature_run=yesngx_feature_incs=ngx_feature_path=ngx_feature_libs=ngx_feature_test=. auto/feature

    其中,ngx_feature变量为C compiler,然后初始化其他一些与 feature 相关的变量,再引用auto/feature脚本。

    1.2 无法找到编译器则退出

    ngx_found表示编译器是否存在,判断ngx_found变量如果是no(该变量是在auto/feature脚本中被置值的),则:

    echoecho $0: error: C compiler $CC is not foundechoexit 1

    即如果编译器不存在,就退出自动脚本运行。

    2 分局不同编译器设置名称

    2.1 msvc
    if `$NGX_WINE $CC -v 2>&1 \    | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \    >/dev/null 2>&1`; then    NGX_CC_NAME=msvc10    echo " + using Microsoft Visual C++ 10 compiler"else if `$NGX_WINE $CC -v 2>&1 \    | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \    >/dev/null 2>&1`; then    NGX_CC_NAME=msvc8    echo " + using Microsoft Visual C++ 8 compiler"else if `$NGX_WINE $CC -v 2>&1 \    | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13' \    >/dev/null 2>&1`; then    NGX_CC_NAME=msvc7    echo " + using Microsoft Visual C++ 7 compiler"else    NGX_CC_NAME=msvc    echo " + using Microsoft Visual C++ compiler"fififi

    2.2 owc
    elseif [ "$CC" = wcl386 ]; then    NGX_CC_NAME=owc    echo " + using Open Watcom C compiler"

    2.3 bcc
    elseif [ "$CC" = bcc32 ]; then    NGX_CC_NAME=bcc    echo " + using Borland C++ compiler"

    2.4 gcc
    elseif `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then    NGX_CC_NAME=gcc    echo " + using GNU C compiler"

    2.5 icc
    elseif `$CC -V 2>&1 | grep '^Intel(R) C' >/dev/null 2>&1`; then    NGX_CC_NAME=icc    echo " + using Intel C++ compiler"

    2.6 sunc
    elseif `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then    NGX_CC_NAME=sunc    echo " + using Sun C compiler"

    2.7 ccc
    elseif `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then    NGX_CC_NAME=ccc    echo " + using Compaq C compiler"

    2.8 acc
    elseif `$CC -V 2>&1 | grep '^aCC: ' >/dev/null 2>&1`; then    NGX_CC_NAME=acc    echo " + using HP aC++ compiler"

    2.9 Unknown
    else    NGX_CC_NAME=unknown

    -

    转载请注明来自“柳大·Poechant的CSDN博客”:Blog.CSDN.net/Poechant

    -

热点排行