dso.html.ja.utf8 revision 07dc96d063d49299da433f84b5c5681da9bbdf68
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster This file is generated from xml source: DO NOT EDIT
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<title>動的共有オブジェクト (DSO) サポート - Apache HTTP サーバ</title>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<script src="/style/scripts/prettify.js" type="text/javascript">
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/images/favicon.ico" rel="shortcut icon" /></head>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/quickreference.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="./">バージョン 2.5</a></div><div id="page-content"><div id="preamble"><h1>動的共有オブジェクト (DSO) サポート</h1>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p><span>翻訳済み言語: </span><a href="/en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/ja/dso.html" title="Japanese"> ja </a> |
1c3134bddb7b413373d1668cbc4b7d95c2477667Mark de Reeper<a href="/ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell 最近更新された内容を見るには英語版をご覧下さい。
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell <p>Apache HTTP サーバはモジュール化されたプログラムで、
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell 管理者がモジュールを選択することでサーバに組み込む機能を選ぶことができます。
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell モジュールはサーバがビルドされるときに <code class="program"><a href="/programs/httpd.html">httpd</a></code> バイナリに
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell 静的に組み込むことができます。もしくは、<code class="program"><a href="/programs/httpd.html">httpd</a></code> バイナリとは
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell 別に存在する動的共有オブジェクト (訳注: Dynamic Shared Object)
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell (DSO) としてコンパイルすることも
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell できます。DSO モジュールはサーバがビルドされるときにコンパイルしたり、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Apache 拡張ツール (<code class="program"><a href="/programs/apxs.html">apxs</a></code>) を
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 使って後でコンパイルして追加したりできます。</p>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell <p>この文書は DSO モジュールの使い方と、仕組みについて
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#implementation">実装</a></li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<li><img alt="" src="/images/down.gif" /> <a href="#usage">使用法の概要</a></li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<li><img alt="" src="/images/down.gif" /> <a href="#background">背景</a></li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<li><img alt="" src="/images/down.gif" /> <a href="#advantages">利点と欠点</a></li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster</ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford<h2><a name="implementation" id="implementation">実装</a></h2>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<table class="related"><tr><th>関連モジュール</th><th>関連ディレクティブ</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_so.html">mod_so</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_so.html#loadmodule">LoadModule</a></code></li></ul></td></tr></table>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>個々の Apache モジュールをロードするための DSO サポートは
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code class="module"><a href="/mod/mod_so.c.html">mod_so.c</a></code> というモジュールの機能に基づいています。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster このモジュール は Apache のコアに静的に組み込まれている必要があります。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster それは <code class="module"><a href="/mod/core.c.html">core.c</a></code> 以外では DSO にできない唯一の
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster モジュールです。事実上、他のすべての Apache のモジュールは、
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott <a href="install.html">インストールの文書</a>で説明されているように、
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott <code class="program"><a href="/programs/configure.html">configure</a></code> の
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>--enable-<em>module</em>=shared</code> オプションでそれぞれを
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster DSO ビルドにすることにより、DSO モジュールにすることができます。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>mod_foo.so</code> のような DSO にモジュールがコンパイルされれば、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>httpd.conf</code> ファイル中で <code class="module"><a href="/mod/mod_so.html">mod_so</a></code> の
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code class="directive"><a href="/mod/mod_so.html#loadmodule">LoadModule</a></code>
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford ディレクティブを使うことでサーバの起動や再起動時にこのモジュールを
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ロードするようにできます。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>Apache モジュール用の (特にサードパーティモジュールの) DSO ファイルの
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 作成を簡単にするために、<code class="program"><a href="/programs/apxs.html">apxs</a></code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster (<dfn>APache eXtenSion</dfn>) という新しいサポートプログラムがあります。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 使うことができます。発想は単純です: Apache のインストール時の
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott <code class="program"><a href="/programs/configure.html">configure</a></code>、<code>make install</code> のときに Apache の
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott C ヘッダをインストールし、DSO ビルド用のプラットフォーム依存の
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster コンパイラとリンカのフラグを <code class="program"><a href="/programs/apxs.html">apxs</a></code> プログラムに追加します。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster これにより、ユーザが Apache の配布ソースツリーなしで、さらに
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster DSO サポートのためのプラットフォーム依存のコンパイラやリンカの
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott フラグをいじることなく Apache のモジュールのソースをコンパイル
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster できるようになります。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott<h2><a name="usage" id="usage">使用法の概要</a></h2>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 短く簡潔な概要です:</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <em>配布されている</em> Apache モジュール、仮に <code>mod_foo.c</code>
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford として、それを DSO <code>mod_foo.so</code> にビルド、インストール:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster$ /configure --prefix=/path/to/install --enable-foo=shared<br />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster$ make install
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <em>サードパーティ</em> Apache モジュール、仮に <code>mod_foo.c</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster として、それを DSO <code>mod_foo.so</code> にビルド、インストール:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster$ /configure --add-module=<var>module_type</var>:/path/to/3rdparty/mod_foo.c \<br />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster --enable-foo=shared<br />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster$ make install
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster$ make install
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <em>サードパーティ</em> Apache モジュール、仮に <code>mod_foo.c</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster として、それを <code class="program"><a href="/programs/apxs.html">apxs</a></code> を使って
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott$ apxs -i -a -n foo mod_foo.la
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>どの場合においても、共有モジュールをコンパイルした後で、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code class="directive"><a href="/mod/mod_so.html#loadmodule">LoadModule</a></code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ディレクティブを使って Apache がモジュールを使用するように
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford しなければなりません。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<h2><a name="background" id="background">背景</a></h2>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster の動的リンク/ロードという気のきいた機構が
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott 存在します。これは、実行時にプログラムのアドレス空間に
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ロードできるような特別な形式でプログラムをビルドすることを
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>このロードは二つの方法で行なうことができます: 実行プログラムが
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster により自動的に行なわれる方法と、実行プログラム中から、システムコール
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster プログラムシステムのインタフェースを使って手動で行なう方法とが
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ライブラリ</em> と呼ばれていて、DSO の名前は
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>libfoo.so</code> や <code>libfoo.so.1.2</code> のようになっています。
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford これらはシステムディレクトリ (通常 <code>/usr/lib</code>) に存在し、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 指定することで確立されます。これによりライブラリへの参照が実行プログラムの
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ファイルに書き込まれて、起動時に Unix のローダが <code>/usr/lib</code> や、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 環境変数 <code>LD_LIBRARY_PATH</code> により設定されたパス、の中から
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott 実行プログラム中の (まだ未解決の) シンボルを DSO にあるシンボルで
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>普通は実行プログラム中のシンボルは DSO からは参照されません
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster (DSO は一般的なコードによる再利用可能なライブラリですので)。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ですから、さらなるシンボルの解決は必要ありません。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster シンボルは Unix ローダにより完全な解決が行なわれますので、実行ファイル自身は
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott 何もする必要がありません。(実際のところ、静的でない方法でリンクされている
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster すべての実行プログラムに組み込まれている開始用のコードの一部に
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ライブラリの動的ロードの利点は明らかです。ライブラリのコードは
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster システムライブラリに <code>libc.so</code> のようにして一度保存するだけでよく、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster プログラムのために必要なディスクの領域を節約することができます。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster これらのファイルは通常はプログラム専用のディレクトリに置かれ、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster これらを使う実行プログラムへのリンクは自動的にはされません。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 実行時に手動で DSO をプログラムのアドレス空間にロードする必要があります。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster この時点では実行プログラムに対して DSO のシンボルの解決は行なわれません。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster しかし、その代わりに Unix のローダが DSO の (まだ未解決の) シンボルを
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford 実行プログラムによりエクスポートされたシンボルと既にロードされた
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster DSO ライブラリによりエクスポートされたシンボル (特に、どこにでもある
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster こうすることで、DSO は最初から静的にリンクされていたかのように、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 実行プログラムのシンボルを知ることができます。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>最後に、DSO の API を利点を生かすために、プログラムは
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott すなわち: 実行プログラムは必要なすべてのシンボルを手動で解決しなければ
3e9693aa1fe0454cabcfcf9020cf1db11258946eBrian Bailey なりません。この機構の利点はプログラムのオプショナルな部分は
4dc32d1e92477080fa1652a865cadc3f63ae04edBrian Bailey 必要になるまでロードする必要がない (だからメモリも消費しない)
3e9693aa1fe0454cabcfcf9020cf1db11258946eBrian Bailey ことです。必要ならば、基本プログラムの機能を拡張するために
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster これらの部分を動的にロードすることができます。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>この DSO 機構は簡単なように見えますが、少なくとも一つ難しい点が
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster あります: プログラムを拡張するために DSO を使っているときに、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster DSO が実行プログラムからシンボルを解決する点です (二番目の方法)。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster これはなぜでしょうか。それは、DSO のシンボルを実行プログラムの
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster シンボルから「逆解決」するというのはライブラリの設計
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster (ライブラリはそれを使用するプログラムのことは何も
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford 知らない) に反していて、この機能はすべてのプラットフォームに
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster あるわけではなく、標準化もされていないからです。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 実際には実行プログラムのグローバルなシンボルは再エクスポートされることは
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster あまりなく、DSO から使うことができません。リンカにグローバルシンボルすべてを
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster エクスポートするようにさせる方法を見つけることが、実行時にプログラムを
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 拡張するために DSO を使うときの一番の問題です。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>共有ライブラリのアプローチが普通の方法です。DSO 機構はそのために
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 設計されたものですから。したがって、その方法はオペレーティングシステムが
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 提供するほとんどすべての種類のライブラリで使われています。
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott 一方、プログラムの拡張のために共有オブジェクトを使用する、という方は
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster あまり使われていません。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>1998 年の時点で、実行時に実際に機能拡張のために DSO 機構を使っている
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ソフトウェアパッケージは少しだけでした: Perl 5 (XS 機構と DnaLoader モジュール
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster モジュールの概念を使って機能拡張をしていて、内部的にディスパッチリストに
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 基づいた外部モジュールの Apache コア機能へのリンクを行なっていましたので、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster バージョン 1.3 から、Apache も DSO 機構を使う仲間になりました。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Apache は実行時に DSO を使ってモジュールをロードするようにすでに
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 運命付けられていたのです。</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<h2><a name="advantages" id="advantages">利点と欠点</a></h2>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>実際のサーバプロセスを組み立てるために、
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott <code class="directive"><a href="/mod/mod_so.html#loadmodule">LoadModule</a></code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster を使うことができますので、サーバパッケージの柔軟性が高まりました。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster たとえば、一つの Apache のインストールから
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott 違う構成のサーバ (標準版と SSL 版、最小構成と拡張版 [mod_perl, PHP3]
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>インストールの後であっても、サーバのパッケージをサードパーティ
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster モジュールで簡単に拡張できるようになりました。これは、Apache コア
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster パッケージと、PHP3, mod_perl, mod_fastcgi <em>など</em> の追加の
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster パッケージを作成できるので、少なくともベンダのパッケージ管理者にとって
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 大きな利点があります。</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>Apache モジュールの開発が簡単になります。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster これは DSO と <code class="program"><a href="/programs/apxs.html">apxs</a></code> の組み合わせにより、Apache ソースツリーの
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 外で作業でき、開発中のモジュールの新しいバージョンを
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>apachectl restart</code> を行なうだけで良くなるからです。</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>すべてのオペレーティングシステムがプログラムのアドレス空間に
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster コードを動的ロードすることをサポートしているわではないので、
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott プラットフォームによっては DSO 機構は使えません。</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>Unix のローダがシンボルの解決をする必要ができたので、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster そのオーバヘッドによりサーバの起動時間が約 20% 遅くなっています。</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>位置非依存コード (PIC) (訳注 position independent code) は
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 相対アドレスのために複雑なアセンブラのトリックが必要なことがあり、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster それは必ずしも絶対アドレスと同じくらいの速度がでるわけではありませんので、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster プラットフォームによってはサーバの実行速度が約 5% 遅くなります。</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li>DSO モジュールはすべてのプラットフォームで他の DSO に基づいた
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster というわけではありませんので (たとえば、a.out のプラットフォームでは
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster この機能はありませんが、ELF のプラットフォームにはあります)、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster すべての種類のモジュールに DSO 機構を使えるわけではありません。
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster 言い換えると、DSO ファイルとしてコンパイルされたモジュールの
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott Apache のコアのシンボル、C ライブラリ (<code>libc</code>) と
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Apache コアが使っている他のすべての静的なライブラリと動的ライブラリの
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster シンボルのみに制限されます。その他のコードを使う方法は、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster Apache コア自身がすでにそのコードへの参照があるようにするか、
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster どちらかしかありません。</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p><span>翻訳済み言語: </span><a href="/en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/ja/dso.html" title="Japanese"> ja </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott<script type="text/javascript"><!--//--><![CDATA[//><!--
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fostervar comments_shortname = 'httpd';
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fostervar comments_identifier = 'http://httpd.apache.org/docs/trunk/dso.html';
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster(function(w, d) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster d.write('<div id="comments_thread"><\/div>');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster var s = d.createElement('script');
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster})(window, document);
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott<p class="apache">Copyright 2014 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/quickreference.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterif (typeof(prettyPrint) !== 'undefined') {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster prettyPrint();