Nginx · 자동 스 크 립 트 편 정독 (4) 도구 형 스 크 립 트 시리즈
11099 단어 nginx
Author: Poechant
Blog: blog.CSDN.net/Poechant
Email: zhongchao.ustc#gmail.com (#->@)
Date: March 12th, 2012
Copyright © 류 대 · Poechant 목차
auto / have 자동 설정 헤더 파일 에 매크로 정의 추가 (
objs/ngx_auto_config.h) auto / nohave 자동 설정 헤더 파일 에 매크로 정의 사용 불가 (objs/ngx_auto_config.h) 추가auto / define 은 자동 설정 스 크 립 트 에 K - V 매크로 정의 (
objs/ngx_auto_config.h) 를 추가 하여 "K 를 설 정 했 습 니 다. 그 값 은 V 입 니 다" 을 표시 합 니 다.auto/have_headers 자동 헤더 파일 (
objs/ngx_auto_header.h) auto/feature auto / type / sizeof 테스트 프로그램 생 성 및 지정 한 형식의 크기 검출
auto/types/typedef
auto/types/value
1 auto/have
주요 기능: 자동 설정 헤더 파일 에 지정 한 매개 변 수 를 표시 하 는 매크로 정의.
처리 변수:
$have 역할 개체:역할 대상:
$NGX_AUTO_CONFIG_H 변수 가 표시 하 는 자동 생 성 헤더 파일. 기본 대상:
objs/ngx_auto_config.h cat << END >> $NGX_AUTO_CONFIG_H
#ifndef $have
#define $have 1
#endif
END
예시:
have 값 이 SOME_FLAG 이면 이 스 크 립 트 를 참조 하여 실 행 된 후 objs/ngx_auto_config.h 에 다음 과 같은 내용 을 추가 합 니 다.#ifndef SOME_FLAG
#define SOME_FLAG 1
#endif
2 auto/nohave
auto/have 스 크 립 트 와 유사 합 니 다.주요 기능: 자동 설정 헤더 파일 에 지정 한 인자 가 없 는 매크로 정 의 를 표시 합 니 다.
처리 변수:
$have 역할 개체:역할 대상:
$NGX_AUTO_CONFIG_H 변수 가 표시 하 는 자동 생 성 헤더 파일. 기본 대상:
objs/ngx_auto_config.h cat << END >> $NGX_AUTO_CONFIG_H
#ifndef $have
#define $have 0
#endif
END
예시:
have 값 이 SOME_FLAG 이면 이 스 크 립 트 를 참조 하여 실 행 된 후 objs/ngx_auto_config.h 에 다음 과 같은 내용 을 추가 합 니 다.#ifndef SOME_FLAG
#define SOME_FLAG 0
#endif
3 auto/define
주요 기능: 자동 설정 헤더 파일 에 지정 한 매개 변 수 를 표시 하 는 값 처리 변수:
have 과 value 역할 개체:역할 대상:
$NGX_AUTO_CONFIG_H 변수 가 표시 하 는 자동 생 성 헤더 파일. 기본 대상:
objs/ngx_auto_config.h cat << END >> $NGX_AUTO_CONFIG_H
#ifndef $have
#define $have $value
#endif
END
예시:
have 값 이 SOME_FLAG 이 고 value 값 이 1234 이면 이 스 크 립 트 를 참조 하여 실 행 된 후 objs/ngx_auto_config.h 에 다음 과 같은 내용 을 추가 합 니 다.#ifndef SOME_FLAG
#define SOME_FLAG 1234
#endif
4 auto/have_headers
주요 기능: 자동 헤더 파일 에 지정 한 매개 변 수 를 표시 합 니 다 처리 변수:
have 과 value 역할 개체:역할 대상:
$NGX_AUTO_HEADERS_H 변수 가 표시 하 는 자동 생 성 헤더 파일. 기본 대상:
objs/ngx_auto_headers.h cat << END >> $NGX_AUTO_HEADERS_H
#ifndef $have
#define $have 1
#endif
END
주의:
auto/have_headers 은 auto/have 과 달리 전 자 는 objs/ngx_auto_config.h 에 쓰 고 후 자 는 objs/ngx_auto_headers.h 에 쓴다. 5 auto/feature
주요 기능: 처리 변수:
$ngx_n $ngx_feature $ngx_c ngx_feature_name $ngx_feature_path $ngx_feature_inc_path $ngx_temp $ngx_feature_incs $ngx_feature_test $ngx_feature_libs $ngx_have_feature 역할 개체:
역할 대상: 기본 대상:
5.1 출력 검사 알림
< Nginx 소스 코드 정독 · 자동 스 크 립 트 편 (2) 초기 변수 스 크 립 트 auto / init 설정 > 문 에서
ngx_n 과 ngx_c 두 변수 에 관 한 것 을 기억 하 십 니까?auto/feature 에서 첫 번 째 문장 은:echo $ngx_n "checking for $ngx_feature ...$ngx_c"
echo 한 마디 checking for $ngx_feature 을 하고 줄 을 바 꾸 는 것 이다.물론 ngx_n 과 ngx_c 이 모두 비어 있 는 경우 가 있 는데 이 때 는 정말 주동 적 으로 줄 을 바 꾸 지 않 았 다.그리고
NGX_AUTOCONF_ERR 에 표 시 된 파일 에 자동 설정 오류 정 보 를 추가 합 니 다.이 파일 은 auto/init 파일 에서 초기 화 되 었 습 니 다 (< Nginx 소스 코드 정독 · 자동 스 크 립 트 편 (2) 초기 변수 스 크 립 트 auto / init 설정 > 참조). 그 값 은 NGX_AUTOCONF_ERR=$NGX_OBJS/autoconf.err 이 고 기본 값 은 objs/autoconf.err 입 니 다.5.2
ngx_found 초기 화ngx_found=no
5.3 초기 화
ngx_have_featureif test -n "$ngx_feature_name"; then
ngx_have_feature=`echo $ngx_feature_name \
| tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ`
fi
test -n 은 매개 변수의 길이 가 0 인지 시험 하 는 것 이다.그렇다면 ngx_feature_name 이 비어 있 으 면 if 내 문 구 를 실행 하지 않 고 ngx_have_feature 을 ngx_feature_name 이 라 고 명명 한 대문자 판 (tr 명령 은 소문 자 를 모두 대문자 로 바 꿉 니 다).5.4
ngx_feature_inc_path 초기 화if test -n "$ngx_feature_path"; then
for ngx_temp in $ngx_feature_path; do
ngx_feature_inc_path="$ngx_feature_inc_path -I $ngx_temp"
done
fi
test -n 은 매개 변수의 길이 가 0 인지 시험 하 는 것 이다.ngx_feature_path 이 /path/to/one /path/to/two /path/to/three 이면 ngx_feature_inc_path 은 -I /path/to/one -I /path/to/two -I /path/to/three 으로 설치 된다.5.5 자동 테스트 프로그램 생 성
자동 테스트 원본 파일 은
auto/init 스 크 립 트 에서 $NGX_OBJS/autotest 으로 초기 화 되 었 으 며, 기본 값 은 objs/autotest 입 니 다.접미사 명 을 합치 면 objs/autotest.c 입 니 다.cat << END > $NGX_AUTOTEST.c
#include <sys/types.h>
$NGX_INCLUDE_UNISTD_H
$ngx_feature_incs
int main() {
$ngx_feature_test;
return 0;
}
END
그 중에서
ngx_feature_incs 과 ngx_feature_test 은 auto/feature 스 크 립 트 의 매개 변수 라 고 할 수 있 습 니 다.5.6 컴 파일 자동 테스트 프로그램
CC 은 스 크 립 트 auto/options 에서 초기 화 되 었 고 CC=${CC:-gcc} 입 니 다.이 단락 코드 의 기능 은 컴 파일 명령 을 생 성 하 는 것 이다.ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_TEST_LD_OPT $ngx_feature_libs"
ngx_feature_inc_path=
테스트 프로그램 을 실행 하 다.
eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1"
5.7
ngx_feature_run 에 따라 처리이 단락 은 약간 길 고 다음은 점차적으로 설명 한다.
Bash 프로 그래 밍 의 모든 불 표현 식 은 괄호 로 묶 여 있 습 니 다.
-x 매개 변 수 는 Test if file exists and is executable 을 나타 낸다.따라서 NGX_AUTOTEST 이 표시 한 파일 이 존재 한다 면 then 을 실행 합 니 다.if [ -x $NGX_AUTOTEST ]; then
case "$ngx_feature_run" in
ngx_feature_run 의 값 이 yes 이면 -c 으로 인해 NGX_AUTOTEST 파일 의 내용 을 명령 으로 실행 하고 표준 출력 과 오류 출력 결 과 는 모두 NGX_AUTOCONF_ERR 으로 재 설정 된다. yes)
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
echo " found"
ngx_found=yes
ngx_feature_name 길이 가 0 이 아니라면 have 은 $ngx_have_feature 의 값 으로 설정 하고 auto/have 스 크 립 트 를 참조 하여 objs/ngx_auto_config.h 에 매크로 정 의 를 기록 합 니 다. if test -n "$ngx_feature_name"; then
have=$ngx_have_feature . auto/have
fi
NGX_AUTOTEST 이 표시 하 는 값 이 비어 있 거나 표시 하 는 명령 의 실행 오류 가 발생 하면 else 을 실행 합 니 다. else
echo " found but is not working"
fi
;;
ngx_feature_run 의 값 이 value 이면 NGX_AUTOTEST 이 표시 한 명령 을 집행 한다. value)
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
echo " found"
ngx_found=yes
objs/ngx_auto_config.h 파일 을 쓰 고 싶 습 니 다: cat << END >> $NGX_AUTO_CONFIG_H
#ifndef $ngx_feature_name
#define $ngx_feature_name `$NGX_AUTOTEST`
#endif
END
else
echo " found but is not working"
fi
;;
ngx_feature_run 이 bug 이 라면 이전 상황 과 유사 하 다. bug)
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
echo " not found"
else
echo " found"
ngx_found=yes
if test -n "$ngx_feature_name"; then
have=$ngx_have_feature . auto/have
fi
fi
;;
다른 경우 라면
ngx_feature_name 이 비어 있 지 않 으 면 ngx_have_feature 과 관련 된 매크로 를 objs/ngx_auto_config.h 직원 에 게 기록 합 니 다. *)
echo " found"
ngx_found=yes
if test -n "$ngx_feature_name"; then
have=$ngx_have_feature . auto/have
fi
;;
esac
만약 에
NGX_AUTOTEST 이 표시 한 파일 이 존재 하지 않 거나 실행 할 수 없다 면 아래 의 else 중의 몇 마디 echo 을 집행 한다.else
echo " not found"
echo "----------" >> $NGX_AUTOCONF_ERR
cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR
echo "----------" >> $NGX_AUTOCONF_ERR
echo $ngx_test >> $NGX_AUTOCONF_ERR
echo "----------" >> $NGX_AUTOCONF_ERR
fi
5.8
NGX_AUTOSET 테스트 프로그램 실행 가능 파일 삭제rm $NGX_AUTOTEST*
-
전재
-
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.