web-dev-qa-db-ja.com

Apacheモジュールのコンパイル--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
ansichart

いいえ、--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-sharednone引数を許可しません。

唯一の追加の違いは、--enable-modulesmodule_defaultを設定しないことです。 module_defaultはスクリプトの先頭近くで推測され、可能であればsharedに設定されます。動的共有オブジェクトがシステムでサポートされていない場合は、staticに設定されます。

後で、モジュール名がmostall、またはreallyallに設定されている場合、これらのモジュールはmodule_defaultの設定に従って構築されます。

1
grochmal

ここにドキュメントから 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.

これにより、それらが動的にリンクされていることが明らかになることを願っています。

0
Pozzo-Balbi