解剖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=yes
ngx_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
指令碼中被置值的),則:
echo
echo $0: error: C compiler $CC is not found
echo
exit 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"
fi
fi
fi
2.2 owc
else
if [ "$CC" = wcl386 ]; then
NGX_CC_NAME=owc
echo " + using Open Watcom C compiler"
2.3 bcc
else
if [ "$CC" = bcc32 ]; then
NGX_CC_NAME=bcc
echo " + using Borland C++ compiler"
2.4 gcc
else
if `$CC -v 2>&1 | grep 'gcc version' >/dev/null 2>&1`; then
NGX_CC_NAME=gcc
echo " + using GNU C compiler"
2.5 icc
else
if `$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
else
if `$CC -V 2>&1 | grep 'Sun C' >/dev/null 2>&1`; then
NGX_CC_NAME=sunc
echo " + using Sun C compiler"
2.7 ccc
else
if `$CC -V 2>&1 | grep '^Compaq C' >/dev/null 2>&1`; then
NGX_CC_NAME=ccc
echo " + using Compaq C compiler"
2.8 acc
else
if `$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
-
相關文章
- 解剖Nginx·自動指令碼篇(2)設定初始變數指令碼 auto/initNginx指令碼變數
- 解剖Nginx·自動指令碼篇(3)原始碼相關變數指令碼 auto/sourcesNginx指令碼原始碼變數
- 解剖Nginx·自動指令碼篇(5)編譯器相關主指令碼Nginx指令碼編譯
- 解剖Nginx·自動指令碼篇(1)解析配置選項指令碼 auto/optionsNginx指令碼
- 解剖Nginx·自動指令碼篇(4)工具型指令碼系列Nginx指令碼
- 精讀Nginx原始碼·自動指令碼篇(2)設定初始變數指令碼 auto/initNginx原始碼指令碼變數
- 精讀 Nginx 原始碼·自動指令碼篇(3)原始碼相關變數指令碼 auto/sourcesNginx原始碼指令碼變數
- 精讀Nginx·自動指令碼篇(5)編譯器相關主指令碼Nginx指令碼編譯
- 解剖Nginx·自動指令碼篇(7)型別相關指令碼系列Nginx指令碼型別
- 精讀 Nginx·自動指令碼篇(4)工具型指令碼系列Nginx指令碼
- 分享一個自動編譯,打包,簽名 android apk 的小指令碼編譯AndroidAPK指令碼
- ant指令碼實現的Android自動編譯指令碼Android編譯
- 自動配置php、mysql、nginx的指令碼PHPMySqlNginx指令碼
- 精讀Nginx原始碼·自動指令碼篇(1)如何讀取配置選項?Nginx原始碼指令碼
- 使用shell指令碼自動修改Xcode工程編譯版本號指令碼XCode編譯
- Java的指令碼機制、編譯器APIJava指令碼編譯API
- 自動ftp指令碼FTP指令碼
- 學習Ant編譯指令碼編譯指令碼
- 6502 指令譯碼器
- 編譯FFMPEG原始碼的指令碼編寫案例編譯原始碼指令碼
- 自動化(YUM/編譯)安裝PHP(5.3/5.5/7.0/7.1)指令碼編譯PHP指令碼
- Window下采用ant 指令碼構建Android自動化編譯指令碼Android編譯
- Linux管理指令碼之自動執行指令碼Linux指令碼
- iOS使用Shell指令碼批量修改類名稱iOS指令碼
- specjvm自動化指令碼JVM指令碼
- 自動備份指令碼指令碼
- docker指令碼自動化Docker指令碼
- LNMP自動部署指令碼LNMP指令碼
- awr自動收集指令碼指令碼
- 自動化RMAN指令碼指令碼
- centos6 修改網路卡名指令碼CentOS指令碼
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- 自動化指令碼安裝mysql shell指令碼範例指令碼MySql
- CentOS7 nginx啟動指令碼CentOSNginx指令碼
- ssh自動輸入密碼指令碼 切換目錄指令碼密碼指令碼
- nginx重啟指令碼Nginx指令碼
- Nginx 重啟指令碼Nginx指令碼
- Ubuntu自動啟動配置指令碼Ubuntu指令碼