아파치 모듈 --enable-mods-shared 및 --enable-modules 컴파일

아파치 모듈 --enable-mods-shared 및 --enable-modules 컴파일

Apache 구성 문서의 일부 httpd-2.4:

--enable-mods-shared=MODULE-LIST

Defines a list of modules to be enabled and build as dynamic shared modules. This mean, these module have to be loaded dynamically by using the LoadModule directive.

--enable-mods-static=MODULE-LIST

This option behaves similar to --enable-mods-shared, but will link the given modules statically. This mean, these modules will always be present while running `httpd`. They need not be loaded with LoadModule.

--enable-modules=MODULE-LIST

This option behaves similar to --enable-mods-shared, and will also link the given modules dynamically. The special keyword none disables the build of all modules.

--enable-modules이는 를 사용하면 해당 지시어를 사용하지 않고도 런타임에 자동으로 연결된다는 의미입니까 LoadModule? 이렇게 하면 어떤 이점이 있나요? 나는 정적 라이브러리와 동적 라이브러리의 차이점을 이해하지만 이것이 나를 혼란스럽게 합니다.

답변1

아니요, 이 --enable-modules옵션은 설정할 수 있도록 존재합니다 --enable-module=none. 구체적인 autoconf행동은acinclude.m4.

AC_ARG_ENABLE(modules,
APACHE_HELP_STRING(--enable-modules=MODULE-LIST,Space-separated list of modules to enable | "all" | "most" | "few" | "none" | "reallyall"),[
  if test "$enableval" = "none"; then
     module_default=no
     module_selection=none
  else
    for i in $enableval; do
      if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
      then
        module_selection=$i
      else
        i=`echo $i | sed 's/-/_/g'`
        eval "enable_$i=shared"
      fi
    done
  fi
])

AC_ARG_ENABLE(mods-shared,
APACHE_HELP_STRING(--enable-mods-shared=MODULE-LIST,Space-separated list of shared modules to enable | "all" | "most" | "few" | "reallyall"),[
  for i in $enableval; do
    if test "$i" = "all" -o "$i" = "most" -o "$i" = "few" -o "$i" = "reallyall"
    then
      module_selection=$i
      module_default=shared
    else
      i=`echo $i | sed 's/-/_/g'`
      eval "enable_$i=shared"
    fi
  done
])

--enable-mods-shared인수가 허용되지 않습니다 none.

유일한 추가 차이점은 .guess를 스크립트 시작 부분에 가깝게 --enable-modules설정하지 않고 (가능한 경우)로 설정하거나 시스템이 동적 공유 객체를 지원하지 않는 경우라는 것입니다.module_defaultmodule_defaultsharedstatic

나중에 모듈 이름이 most, all또는 로 설정되면 reallyall이러한 모듈은 module_default설정된 내용에 따라 빌드됩니다.

답변2

여기 문서에서https://httpd.apache.org/docs/trunk/programs/configure.html

--enable-modules=MODULE-LIST
    This option behaves like to --enable-mods-shared, and will also link the given modules dynamically. The special keyword none disables the build of all modules.

이것이 동적으로 연결되어 있음을 명확히 하기를 바랍니다.

관련 정보