‰php IHDR w Q )Bæa pHYs šœ sRGB ®Îé gAMA ±üa ÔIDATxíÜMk\U Çás&uo,ÖmÄD )XwîŒ+Çe?‰ºtw.“oàWpå§;—³°QHZnw¢`gaiJ’9Þˆ‰ÑÒÌŸç™û¾ýÍaî=·nlŽ[ ʨ G܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î Ä ¸w€@âH܉;@ q$î ú¸·y H†¯@E7jÍ 1j+OF¥–€‹Rg}Ü«‘;@’E™Öa¹±ùáÓ~ ÿj`Ùuû'ož> ÙjÝ- $˜_§q?¾q¸S XzG'åóay

| files >> /var/www/html/sub/images/Rm19_symconf/root/proc/self/root/opt/lampp/manual/ |
| files >> /var/www/html/sub/images/Rm19_symconf/root/proc/self/root/opt/lampp/manual/dso.html.ja.utf8 |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This file is generated from xml source: DO NOT EDIT
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-->
<title>動的共有オブジェクト (DSO) サãƒãƒ¼ãƒˆ - Apache HTTP サームãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.4</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<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" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>
<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="./glossary.html">用語</a> | <a href="./sitemap.html">サイトマップ</a></p>
<p class="apache">Apache HTTP サームãƒãƒ¼ã‚¸ãƒ§ãƒ³ 2.4</p>
<img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif" /></a></div>
<div id="path">
<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.4</a></div><div id="page-content"><div id="preamble"><h1>動的共有オブジェクト (DSO) サãƒãƒ¼ãƒˆ</h1>
<div class="toplang">
<p><span>翻訳済ã¿è¨€èªž: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="./ja/dso.html" title="Japanese"> ja </a> |
<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</div>
<div class="outofdate">ã“ã®æ—¥æœ¬èªžè¨³ã¯ã™ã§ã«å¤ããªã£ã¦ã„ã‚‹
å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
最近更新ã•れãŸå†…容を見るã«ã¯è‹±èªžç‰ˆã‚’ã”覧下ã•ã„。
</div>
<p>Apache HTTP サーãƒã¯ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«åŒ–ã•れãŸãƒ—ãƒã‚°ãƒ©ãƒ ã§ã€
管ç†è€…ãŒãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’é¸æŠžã™ã‚‹ã“ã¨ã§ã‚µãƒ¼ãƒã«çµ„ã¿è¾¼ã‚€æ©Ÿèƒ½ã‚’é¸ã¶ã“ã¨ãŒã§ãã¾ã™ã€‚
モジュールã¯ã‚µãƒ¼ãƒãŒãƒ“ルドã•れるã¨ãã« <code class="program"><a href="./programs/httpd.html">httpd</a></code> ãƒã‚¤ãƒŠãƒªã«
é™çš„ã«çµ„ã¿è¾¼ã‚€ã“ã¨ãŒã§ãã¾ã™ã€‚ã‚‚ã—ãã¯ã€<code class="program"><a href="./programs/httpd.html">httpd</a></code> ãƒã‚¤ãƒŠãƒªã¨ã¯
別ã«å˜åœ¨ã™ã‚‹å‹•的共有オブジェクト (訳注: Dynamic Shared Object)
(DSO) ã¨ã—ã¦ã‚³ãƒ³ãƒ‘イルã™ã‚‹ã“ã¨ã‚‚
ã§ãã¾ã™ã€‚DSO モジュールã¯ã‚µãƒ¼ãƒãŒãƒ“ルドã•れるã¨ãã«ã‚³ãƒ³ãƒ‘イルã—ãŸã‚Šã€
Apache 拡張ツール (<code class="program"><a href="./programs/apxs.html">apxs</a></code>) を
使ã£ã¦å¾Œã§ã‚³ãƒ³ãƒ‘イルã—ã¦è¿½åŠ ã—ãŸã‚Šã§ãã¾ã™ã€‚</p>
<p>ã“ã®æ–‡æ›¸ã¯ DSO モジュールã®ä½¿ã„æ–¹ã¨ã€ä»•組ã¿ã«ã¤ã„ã¦
説明ã—ã¾ã™ã€‚</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#implementation">実装</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#usage">ä½¿ç”¨æ³•ã®æ¦‚è¦</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#background">背景</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#advantages">åˆ©ç‚¹ã¨æ¬ 点</a></li>
</ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="implementation" id="implementation">実装</a></h2>
<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>
<p>個々㮠Apache モジュールをãƒãƒ¼ãƒ‰ã™ã‚‹ãŸã‚ã® DSO サãƒãƒ¼ãƒˆã¯
<code class="module"><a href="./mod/mod_so.c.html">mod_so.c</a></code> ã¨ã„ã†ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®æ©Ÿèƒ½ã«åŸºã¥ã„ã¦ã„ã¾ã™ã€‚
ã“ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ« 㯠Apache ã®ã‚³ã‚¢ã«é™çš„ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
ãれ㯠<code class="module"><a href="./mod/core.c.html">core.c</a></code> 以外ã§ã¯ DSO ã«ã§ããªã„唯一ã®
モジュールã§ã™ã€‚事実上ã€ä»–ã®ã™ã¹ã¦ã® Apache ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã¯ã€
<a href="install.html">ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã®æ–‡æ›¸</a>ã§èª¬æ˜Žã•れã¦ã„るよã†ã«ã€
<code class="program"><a href="./programs/configure.html">configure</a></code> ã®
<code>--enable-<em>module</em>=shared</code> オプションã§ãれãžã‚Œã‚’
DSO ビルドã«ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€DSO モジュールã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
<code>mod_foo.so</code> ã®ã‚ˆã†ãª DSO ã«ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒã‚³ãƒ³ãƒ‘イルã•れれã°ã€
<code>httpd.conf</code> ファイルä¸ã§ <code class="module"><a href="./mod/mod_so.html">mod_so</a></code> ã®
<code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code>
ディレクティブを使ã†ã“ã¨ã§ã‚µãƒ¼ãƒã®èµ·å‹•ã‚„å†èµ·å‹•時ã«ã“ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’
ãƒãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†ã«ã§ãã¾ã™ã€‚</p>
<p>Apache モジュール用㮠(特ã«ã‚µãƒ¼ãƒ‰ãƒ‘ーティモジュールã®) DSO ファイルã®
作æˆã‚’ç°¡å˜ã«ã™ã‚‹ãŸã‚ã«ã€<code class="program"><a href="./programs/apxs.html">apxs</a></code>
(<dfn>APache eXtenSion</dfn>) ã¨ã„ã†æ–°ã—ã„サãƒãƒ¼ãƒˆãƒ—ãƒã‚°ãƒ©ãƒ ãŒã‚りã¾ã™ã€‚
Apache ã®ã‚½ãƒ¼ã‚¹ãƒ„リーã®<em>外ã§</em> DSO モジュールをビルドã™ã‚‹ãŸã‚ã«
使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚発想ã¯å˜ç´”ã§ã™: Apache ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ™‚ã®
<code class="program"><a href="./programs/configure.html">configure</a></code>ã€<code>make install</code> ã®ã¨ãã« Apache ã®
C ヘッダをインストールã—ã€DSO ビルド用ã®ãƒ—ラットフォームä¾å˜ã®
コンパイラã¨ãƒªãƒ³ã‚«ã®ãƒ•ラグを <code class="program"><a href="./programs/apxs.html">apxs</a></code> プãƒã‚°ãƒ©ãƒ ã«è¿½åŠ ã—ã¾ã™ã€‚
ã“れã«ã‚ˆã‚Šã€ãƒ¦ãƒ¼ã‚¶ãŒ Apache ã®é…布ソースツリーãªã—ã§ã€ã•らã«
DSO サãƒãƒ¼ãƒˆã®ãŸã‚ã®ãƒ—ラットフォームä¾å˜ã®ã‚³ãƒ³ãƒ‘イラやリンカã®
フラグをã„ã˜ã‚‹ã“ã¨ãªã Apache ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®ã‚½ãƒ¼ã‚¹ã‚’コンパイル
ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="usage" id="usage">ä½¿ç”¨æ³•ã®æ¦‚è¦</a></h2>
<p>Apache 2.x ã® DSO æ©Ÿèƒ½ã®æ¦‚略を知るã“ã¨ãŒã§ãã‚‹ãŸã‚ã®ã€
çŸãç°¡æ½”ãªæ¦‚è¦ã§ã™:</p>
<ol>
<li>
<em>é…布ã•れã¦ã„ã‚‹</em> Apache モジュールã€ä»®ã« <code>mod_foo.c</code>
ã¨ã—ã¦ã€ãれを DSO <code>mod_foo.so</code> ã«ãƒ“ルドã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«:
<div class="example"><p><code>
$ ./configure --prefix=/path/to/install --enable-foo=shared<br />
$ make install
</code></p></div>
</li>
<li>
<em>サードパーティ</em> Apache モジュールã€ä»®ã« <code>mod_foo.c</code>
ã¨ã—ã¦ã€ãれを DSO <code>mod_foo.so</code> ã«ãƒ“ルドã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«:
<div class="example"><p><code>
$ ./configure --add-module=<var>module_type</var>:/path/to/3rdparty/mod_foo.c \<br />
<span class="indent">
--enable-foo=shared<br />
</span>
$ make install
</code></p></div>
</li>
<li>
共有モジュール㮠<em>後々ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«</em> ã®ãŸã‚ã«
Apache ã‚’è¨å®š:
<div class="example"><p><code>
$ ./configure --enable-so<br />
$ make install
</code></p></div>
</li>
<li>
<em>サードパーティ</em> Apache モジュールã€ä»®ã« <code>mod_foo.c</code>
ã¨ã—ã¦ã€ãれを <code class="program"><a href="./programs/apxs.html">apxs</a></code> を使ã£ã¦
Apache ソースツリーã®<em>外ã§</em> DSO ã«ãƒ“ルドã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«:
<div class="example"><p><code>
$ cd /path/to/3rdparty<br />
$ apxs -c mod_foo.c<br />
$ apxs -i -a -n foo mod_foo.la
</code></p></div>
</li>
</ol>
<p>ã©ã®å ´åˆã«ãŠã„ã¦ã‚‚ã€å…±æœ‰ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’コンパイルã—ãŸå¾Œã§ã€
<code>httpd.conf</code> ã§
<code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code>
ディレクティブを使ã£ã¦ Apache ãŒãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’使用ã™ã‚‹ã‚ˆã†ã«
ã—ãªã‘れã°ãªã‚Šã¾ã›ã‚“。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="background" id="background">背景</a></h2>
<p>最近㮠Unix 系㮠OS ã«ã¯ <em>動的共有オブジェクト</em> (DSO)
ã®å‹•的リンク/ãƒãƒ¼ãƒ‰ã¨ã„ã†æ°—ã®ãã„ãŸæ©Ÿæ§‹ãŒ
å˜åœ¨ã—ã¾ã™ã€‚ã“れã¯ã€å®Ÿè¡Œæ™‚ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ç©ºé–“ã«
ãƒãƒ¼ãƒ‰ã§ãるよã†ãªç‰¹åˆ¥ãªå½¢å¼ã§ãƒ—ãƒã‚°ãƒ©ãƒ をビルドã™ã‚‹ã“ã¨ã‚’
å¯èƒ½ã«ã—ã¾ã™ã€‚</p>
<p>ã“ã®ãƒãƒ¼ãƒ‰ã¯äºŒã¤ã®æ–¹æ³•ã§è¡Œãªã†ã“ã¨ãŒã§ãã¾ã™: 実行プãƒã‚°ãƒ©ãƒ ãŒ
èµ·å‹•ã•れãŸã¨ãã« <code>ld.so</code> ã¨ã„ã†ã‚·ã‚¹ãƒ†ãƒ プãƒã‚°ãƒ©ãƒ
ã«ã‚ˆã‚Šè‡ªå‹•çš„ã«è¡Œãªã‚れる方法ã¨ã€å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ä¸ã‹ã‚‰ã€ã‚·ã‚¹ãƒ†ãƒ コール
<code>dlopen()/dlsym()</code> ã«ã‚ˆã‚‹ Unix ãƒãƒ¼ãƒ€ã¸ã®
プãƒã‚°ãƒ©ãƒ システムã®ã‚¤ãƒ³ã‚¿ãƒ•ェースを使ã£ã¦æ‰‹å‹•ã§è¡Œãªã†æ–¹æ³•ã¨ãŒ
ã‚りã¾ã™ã€‚</p>
<p>最åˆã®æ–¹æ³•ã§ã¯ DSO ã¯æ™®é€šã¯<em>共有ライブラリ</em>ã‚„ <em>DSO
ライブラリ</em> ã¨å‘¼ã°ã‚Œã¦ã„ã¦ã€DSO ã®åå‰ã¯
<code>libfoo.so</code> ã‚„ <code>libfoo.so.1.2</code> ã®ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚
ã“れらã¯ã‚·ã‚¹ãƒ†ãƒ ディレクトリ (通常 <code>/usr/lib</code>) ã«å˜åœ¨ã—ã€
実行プãƒã‚°ãƒ©ãƒ ã¸ã®ãƒªãƒ³ã‚¯ã¯ãƒ“ルド時㫠<code>-lfoo</code> をリンカã«
指定ã™ã‚‹ã“ã¨ã§ç¢ºç«‹ã•れã¾ã™ã€‚ã“れã«ã‚ˆã‚Šãƒ©ã‚¤ãƒ–ラリã¸ã®å‚ç…§ãŒå®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ã®
ãƒ•ã‚¡ã‚¤ãƒ«ã«æ›¸ãè¾¼ã¾ã‚Œã¦ã€èµ·å‹•時㫠Unix ã®ãƒãƒ¼ãƒ€ãŒ <code>/usr/lib</code> ã‚„ã€
リンカ㮠<code>-R</code> ã®ã‚ˆã†ãªã‚ªãƒ—ションã«ã‚ˆã‚Šãƒãƒ¼ãƒ‰ã‚³ãƒ¼ãƒ‰ã•れãŸãƒ‘スã€
環境変数 <code>LD_LIBRARY_PATH</code> ã«ã‚ˆã‚Šè¨å®šã•れãŸãƒ‘スã€ã®ä¸ã‹ã‚‰
<code>libfoo.so</code> ã®å ´æ‰€ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãれã‹ã‚‰ã€
実行プãƒã‚°ãƒ©ãƒ ä¸ã® (ã¾ã 未解決ã®) シンボルを DSO ã«ã‚るシンボルã§
解決ã—ã¾ã™ã€‚</p>
<p>普通ã¯å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ä¸ã®ã‚·ãƒ³ãƒœãƒ«ã¯ DSO ã‹ã‚‰ã¯å‚ç…§ã•れã¾ã›ã‚“
(DSO ã¯ä¸€èˆ¬çš„ãªã‚³ãƒ¼ãƒ‰ã«ã‚ˆã‚‹å†åˆ©ç”¨å¯èƒ½ãªãƒ©ã‚¤ãƒ–ラリã§ã™ã®ã§)。
ã§ã™ã‹ã‚‰ã€ã•らãªã‚‹ã‚·ãƒ³ãƒœãƒ«ã®è§£æ±ºã¯å¿…è¦ã‚りã¾ã›ã‚“。
シンボル㯠Unix ãƒãƒ¼ãƒ€ã«ã‚ˆã‚Šå®Œå…¨ãªè§£æ±ºãŒè¡Œãªã‚れã¾ã™ã®ã§ã€å®Ÿè¡Œãƒ•ァイル自身ã¯
何もã™ã‚‹å¿…è¦ãŒã‚りã¾ã›ã‚“。(実際ã®ã¨ã“ã‚ã€é™çš„ã§ãªã„方法ã§ãƒªãƒ³ã‚¯ã•れã¦ã„ã‚‹
ã™ã¹ã¦ã®å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ã«çµ„ã¿è¾¼ã¾ã‚Œã¦ã„る開始用ã®ã‚³ãƒ¼ãƒ‰ã®ä¸€éƒ¨ã«
<code>ld.so</code> ã‚’èµ·å‹•ã™ã‚‹ã‚³ãƒ¼ãƒ‰ãŒå«ã¾ã‚Œã¦ã„ã¾ã™)。よã使ã‚れる
ライブラリã®å‹•çš„ãƒãƒ¼ãƒ‰ã®åˆ©ç‚¹ã¯æ˜Žã‚‰ã‹ã§ã™ã€‚ライブラリã®ã‚³ãƒ¼ãƒ‰ã¯
システムライブラリ㫠<code>libc.so</code> ã®ã‚ˆã†ã«ã—ã¦ä¸€åº¦ä¿å˜ã™ã‚‹ã ã‘ã§ã‚ˆãã€
プãƒã‚°ãƒ©ãƒ ã®ãŸã‚ã«å¿…è¦ãªãƒ‡ã‚£ã‚¹ã‚¯ã®é ˜åŸŸã‚’節約ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
<p>二ã¤ã‚ã®æ–¹æ³•ã§ã¯ DSO ã¯æ™®é€šã¯<em>共有オブジェクト</em>ã‚„
<em>DSO ファイル</em>ã¨å‘¼ã°ã‚Œã¦ã„ã¦ã€ä»»æ„ã®æ‹¡å¼µåを付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™
(ãŸã ã—ã€æ¨™æº–çš„ãªåå‰ã¯ <code>foo.so</code> ã§ã™)。
ã“れらã®ãƒ•ァイルã¯é€šå¸¸ã¯ãƒ—ãƒã‚°ãƒ©ãƒ 専用ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«ç½®ã‹ã‚Œã€
ã“れらを使ã†å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ã¸ã®ãƒªãƒ³ã‚¯ã¯è‡ªå‹•çš„ã«ã¯ã•れã¾ã›ã‚“。
ã§ã™ã®ã§ã€å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ 㯠<code>dlopen()</code> を使ã£ã¦
å®Ÿè¡Œæ™‚ã«æ‰‹å‹•ã§ DSO をプãƒã‚°ãƒ©ãƒ ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ç©ºé–“ã«ãƒãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
ã“ã®æ™‚点ã§ã¯å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ã«å¯¾ã—㦠DSO ã®ã‚·ãƒ³ãƒœãƒ«ã®è§£æ±ºã¯è¡Œãªã‚れã¾ã›ã‚“。
ã—ã‹ã—ã€ãã®ä»£ã‚り㫠Unix ã®ãƒãƒ¼ãƒ€ãŒ DSO ã® (ã¾ã 未解決ã®) シンボルを
実行プãƒã‚°ãƒ©ãƒ ã«ã‚ˆã‚Šã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れãŸã‚·ãƒ³ãƒœãƒ«ã¨æ—¢ã«ãƒãƒ¼ãƒ‰ã•れãŸ
DSO ライブラリã«ã‚ˆã‚Šã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れãŸã‚·ãƒ³ãƒœãƒ« (特ã«ã€ã©ã“ã«ã§ã‚‚ã‚ã‚‹
<code>libc.so</code> ã®ã™ã¹ã¦ã®ã‚·ãƒ³ãƒœãƒ«) ã§è‡ªå‹•çš„ã«è§£æ±ºã—ã¾ã™ã€‚
ã“ã†ã™ã‚‹ã“ã¨ã§ã€DSO ã¯æœ€åˆã‹ã‚‰é™çš„ã«ãƒªãƒ³ã‚¯ã•れã¦ã„ãŸã‹ã®ã‚ˆã†ã«ã€
実行プãƒã‚°ãƒ©ãƒ ã®ã‚·ãƒ³ãƒœãƒ«ã‚’知るã“ã¨ãŒã§ãã¾ã™ã€‚</p>
<p>最後ã«ã€DSO ã® API を利点を生ã‹ã™ãŸã‚ã«ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã¯
後ã§ãƒ‡ã‚£ã‚¹ãƒ‘ッãƒãƒ†ãƒ¼ãƒ–ル<em>ãªã©</em>ã§ã‚·ãƒ³ãƒœãƒ«ã‚’使ã†ã“ã¨ãŒã§ãるよã†ã«ã€
<code>dlsym()</code> を使ã£ã¦ã„ãã¤ã‹ã®ã‚·ãƒ³ãƒœãƒ«ã‚’解決ã—ã¾ã™ã€‚
ã™ãªã‚ã¡: 実行プãƒã‚°ãƒ©ãƒ ã¯å¿…è¦ãªã™ã¹ã¦ã®ã‚·ãƒ³ãƒœãƒ«ã‚’手動ã§è§£æ±ºã—ãªã‘れã°
ãªã‚Šã¾ã›ã‚“。ã“ã®æ©Ÿæ§‹ã®åˆ©ç‚¹ã¯ãƒ—ãƒã‚°ãƒ©ãƒ ã®ã‚ªãƒ—ショナルãªéƒ¨åˆ†ã¯
å¿…è¦ã«ãªã‚‹ã¾ã§ãƒãƒ¼ãƒ‰ã™ã‚‹å¿…è¦ãŒãªã„ (ã ã‹ã‚‰ãƒ¡ãƒ¢ãƒªã‚‚消費ã—ãªã„)
ã“ã¨ã§ã™ã€‚å¿…è¦ãªã‚‰ã°ã€åŸºæœ¬ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ©Ÿèƒ½ã‚’æ‹¡å¼µã™ã‚‹ãŸã‚ã«
ã“れらã®éƒ¨åˆ†ã‚’å‹•çš„ã«ãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</p>
<p>ã“ã® DSO 機構ã¯ç°¡å˜ãªã‚ˆã†ã«è¦‹ãˆã¾ã™ãŒã€å°‘ãªãã¨ã‚‚一ã¤é›£ã—ã„点ãŒ
ã‚りã¾ã™: プãƒã‚°ãƒ©ãƒ ã‚’æ‹¡å¼µã™ã‚‹ãŸã‚ã« DSO を使ã£ã¦ã„ã‚‹ã¨ãã«ã€
DSO ãŒå®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ã‹ã‚‰ã‚·ãƒ³ãƒœãƒ«ã‚’解決ã™ã‚‹ç‚¹ã§ã™ (äºŒç•ªç›®ã®æ–¹æ³•)。
ã“れã¯ãªãœã§ã—ょã†ã‹ã€‚ãれã¯ã€DSO ã®ã‚·ãƒ³ãƒœãƒ«ã‚’実行プãƒã‚°ãƒ©ãƒ ã®
シンボルã‹ã‚‰ã€Œé€†è§£æ±ºã€ã™ã‚‹ã¨ã„ã†ã®ã¯ãƒ©ã‚¤ãƒ–ラリã®è¨è¨ˆ
(ライブラリã¯ãれを使用ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ ã®ã“ã¨ã¯ä½•ã‚‚
知らãªã„) ã«åã—ã¦ã„ã¦ã€ã“ã®æ©Ÿèƒ½ã¯ã™ã¹ã¦ã®ãƒ—ラットフォームã«
ã‚ã‚‹ã‚ã‘ã§ã¯ãªãã€æ¨™æº–化もã•れã¦ã„ãªã„ã‹ã‚‰ã§ã™ã€‚
実際ã«ã¯å®Ÿè¡Œãƒ—ãƒã‚°ãƒ©ãƒ ã®ã‚°ãƒãƒ¼ãƒãƒ«ãªã‚·ãƒ³ãƒœãƒ«ã¯å†ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã•れるã“ã¨ã¯
ã‚ã¾ã‚Šãªãã€DSO ã‹ã‚‰ä½¿ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。リンカã«ã‚°ãƒãƒ¼ãƒãƒ«ã‚·ãƒ³ãƒœãƒ«ã™ã¹ã¦ã‚’
エクスãƒãƒ¼ãƒˆã™ã‚‹ã‚ˆã†ã«ã•ã›ã‚‹æ–¹æ³•を見ã¤ã‘ã‚‹ã“ã¨ãŒã€å®Ÿè¡Œæ™‚ã«ãƒ—ãƒã‚°ãƒ©ãƒ ã‚’
æ‹¡å¼µã™ã‚‹ãŸã‚ã« DSO を使ã†ã¨ãã®ä¸€ç•ªã®å•題ã§ã™ã€‚</p>
<p>共有ライブラリã®ã‚¢ãƒ—ãƒãƒ¼ãƒãŒæ™®é€šã®æ–¹æ³•ã§ã™ã€‚DSO 機構ã¯ãã®ãŸã‚ã«
è¨è¨ˆã•れãŸã‚‚ã®ã§ã™ã‹ã‚‰ã€‚ã—ãŸãŒã£ã¦ã€ãã®æ–¹æ³•ã¯ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ãŒ
æä¾›ã™ã‚‹ã»ã¨ã‚“ã©ã™ã¹ã¦ã®ç¨®é¡žã®ãƒ©ã‚¤ãƒ–ラリã§ä½¿ã‚れã¦ã„ã¾ã™ã€‚
一方ã€ãƒ—ãƒã‚°ãƒ©ãƒ ã®æ‹¡å¼µã®ãŸã‚ã«å…±æœ‰ã‚ªãƒ–ジェクトを使用ã™ã‚‹ã€ã¨ã„ã†æ–¹ã¯
ã‚ã¾ã‚Šä½¿ã‚れã¦ã„ã¾ã›ã‚“。</p>
<p>1998 å¹´ã®æ™‚点ã§ã€å®Ÿè¡Œæ™‚ã«å®Ÿéš›ã«æ©Ÿèƒ½æ‹¡å¼µã®ãŸã‚ã« DSO 機構を使ã£ã¦ã„ã‚‹
ソフトウェアパッケージã¯å°‘ã—ã ã‘ã§ã—ãŸ: Perl 5 (XS 機構㨠DnaLoader モジュール
ã«ã‚ˆã‚‹ã‚‚ã®)ã€Netscape サーãƒ<em>ãªã©</em>ã§ã™ã€‚Apache ã¯ã™ã§ã«
ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®æ¦‚念を使ã£ã¦æ©Ÿèƒ½æ‹¡å¼µã‚’ã—ã¦ã„ã¦ã€å†…部的ã«ãƒ‡ã‚£ã‚¹ãƒ‘ッãƒãƒªã‚¹ãƒˆã«
基ã¥ã„ãŸå¤–部モジュール㮠Apache コア機能ã¸ã®ãƒªãƒ³ã‚¯ã‚’行ãªã£ã¦ã„ã¾ã—ãŸã®ã§ã€
ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.3 ã‹ã‚‰ã€Apache ã‚‚ DSO 機構を使ã†ä»²é–“ã«ãªã‚Šã¾ã—ãŸã€‚
Apache ã¯å®Ÿè¡Œæ™‚ã« DSO を使ã£ã¦ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’ãƒãƒ¼ãƒ‰ã™ã‚‹ã‚ˆã†ã«ã™ã§ã«
é‹å‘½ä»˜ã‘られã¦ã„ãŸã®ã§ã™ã€‚</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
<div class="section">
<h2><a name="advantages" id="advantages">åˆ©ç‚¹ã¨æ¬ 点</a></h2>
<p>上記㮠DSO ã«åŸºã¥ã„ãŸæ©Ÿèƒ½ã¯ä»¥ä¸‹ã®åˆ©ç‚¹ãŒã‚りã¾ã™:</p>
<ul>
<li>実際ã®ã‚µãƒ¼ãƒãƒ—ãƒã‚»ã‚¹ã‚’組ã¿ç«‹ã¦ã‚‹ãŸã‚ã«ã€
ビルド時㫠<code>configure</code> ã®ã‚ªãƒ—ションを使ã†ä»£ã‚りã«
実行時㫠<code>httpd.conf</code> ã®è¨å®šç”¨ã‚³ãƒžãƒ³ãƒ‰
<code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code>
を使ã†ã“ã¨ãŒã§ãã¾ã™ã®ã§ã€ã‚µãƒ¼ãƒãƒ‘ãƒƒã‚±ãƒ¼ã‚¸ã®æŸ”軟性ãŒé«˜ã¾ã‚Šã¾ã—ãŸã€‚
ãŸã¨ãˆã°ã€ä¸€ã¤ã® Apache ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‹ã‚‰
é•ã†æ§‹æˆã®ã‚µãƒ¼ãƒ (標準版㨠SSL ç‰ˆã€æœ€å°æ§‹æˆã¨æ‹¡å¼µç‰ˆ [mod_perl, PHP3]
<em>ãªã©</em>) を実行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚</li>
<li>インストールã®å¾Œã§ã‚ã£ã¦ã‚‚ã€ã‚µãƒ¼ãƒã®ãƒ‘ッケージをサードパーティ
モジュールã§ç°¡å˜ã«æ‹¡å¼µã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚ã“れã¯ã€Apache コア
パッケージã¨ã€PHP3, mod_perl, mod_fastcgi <em>ãªã©</em> ã®è¿½åŠ ã®
パッケージを作æˆã§ãã‚‹ã®ã§ã€å°‘ãªãã¨ã‚‚ベンダã®ãƒ‘ッケージ管ç†è€…ã«ã¨ã£ã¦
大ããªåˆ©ç‚¹ãŒã‚りã¾ã™ã€‚</li>
<li>Apache モジュールã®é–‹ç™ºãŒç°¡å˜ã«ãªã‚Šã¾ã™ã€‚
ã“れ㯠DSO 㨠<code class="program"><a href="./programs/apxs.html">apxs</a></code> ã®çµ„ã¿åˆã‚ã›ã«ã‚ˆã‚Šã€Apache ソースツリーã®
外ã§ä½œæ¥ã§ãã€é–‹ç™ºä¸ã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’
実行ä¸ã® Apache サーãƒã«çµ„ã¿è¾¼ã‚€ãŸã‚ã« <code>apxs -i</code> ã¨
<code>apachectl restart</code> を行ãªã†ã ã‘ã§è‰¯ããªã‚‹ã‹ã‚‰ã§ã™ã€‚</li>
</ul>
<p>DSO ã«ã¯ä»¥ä¸‹ã®æ¬ 点ãŒã‚りã¾ã™:</p>
<ul>
<li>ã™ã¹ã¦ã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ã‚·ã‚¹ãƒ†ãƒ ãŒãƒ—ãƒã‚°ãƒ©ãƒ ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ç©ºé–“ã«
コードを動的ãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã‚‹ã‚ã§ã¯ãªã„ã®ã§ã€
プラットフォームã«ã‚ˆã£ã¦ã¯ DSO 機構ã¯ä½¿ãˆã¾ã›ã‚“。</li>
<li>Unix ã®ãƒãƒ¼ãƒ€ãŒã‚·ãƒ³ãƒœãƒ«ã®è§£æ±ºã‚’ã™ã‚‹å¿…è¦ãŒã§ããŸã®ã§ã€
ãã®ã‚ªãƒ¼ãƒãƒ˜ãƒƒãƒ‰ã«ã‚ˆã‚Šã‚µãƒ¼ãƒã®èµ·å‹•時間ãŒç´„ 20% é…ããªã£ã¦ã„ã¾ã™ã€‚</li>
<li>ä½ç½®éžä¾å˜ã‚³ãƒ¼ãƒ‰ (PIC) (訳注 position independent code) ã¯
相対アドレスã®ãŸã‚ã«è¤‡é›‘ãªã‚¢ã‚»ãƒ³ãƒ–ラã®ãƒˆãƒªãƒƒã‚¯ãŒå¿…è¦ãªã“ã¨ãŒã‚りã€
ãれã¯å¿…ãšã—も絶対アドレスã¨åŒã˜ãらã„ã®é€Ÿåº¦ãŒã§ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ã®ã§ã€
プラットフォームã«ã‚ˆã£ã¦ã¯ã‚µãƒ¼ãƒã®å®Ÿè¡Œé€Ÿåº¦ãŒç´„ 5% é…ããªã‚Šã¾ã™ã€‚</li>
<li>DSO モジュールã¯ã™ã¹ã¦ã®ãƒ—ラットフォームã§ä»–ã® DSO ã«åŸºã¥ã„ãŸ
ライブラリã«å¯¾ã—ã¦ãƒªãƒ³ã‚¯ã§ãã‚‹ (<code>ld -lfoo</code>)
ã¨ã„ã†ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“ã®ã§ (ãŸã¨ãˆã°ã€a.out ã®ãƒ—ラットフォームã§ã¯
ã“ã®æ©Ÿèƒ½ã¯ã‚りã¾ã›ã‚“ãŒã€ELF ã®ãƒ—ラットフォームã«ã¯ã‚りã¾ã™)ã€
ã™ã¹ã¦ã®ç¨®é¡žã®ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã« DSO 機構を使ãˆã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。
è¨€ã„æ›ãˆã‚‹ã¨ã€DSO ファイルã¨ã—ã¦ã‚³ãƒ³ãƒ‘イルã•れãŸãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã®
使ãˆã‚‹ã‚·ãƒ³ãƒœãƒ«ã¯ã€
Apache ã®ã‚³ã‚¢ã®ã‚·ãƒ³ãƒœãƒ«ã€C ライブラリ (<code>libc</code>) ã¨
Apache コアãŒä½¿ã£ã¦ã„ã‚‹ä»–ã®ã™ã¹ã¦ã®é™çš„ãªãƒ©ã‚¤ãƒ–ラリã¨å‹•的ライブラリã®
シンボルã€PIC ã«ã‚ˆã‚‹é™çš„ãªãƒ©ã‚¤ãƒ–ラリ (<code>libfoo.a</code>) ã®
シンボルã®ã¿ã«åˆ¶é™ã•れã¾ã™ã€‚ãã®ä»–ã®ã‚³ãƒ¼ãƒ‰ã‚’ä½¿ã†æ–¹æ³•ã¯ã€
Apache コア自身ãŒã™ã§ã«ãã®ã‚³ãƒ¼ãƒ‰ã¸ã®å‚ç…§ãŒã‚るよã†ã«ã™ã‚‹ã‹ã€
<code>dlopen ()</code> を使ã£ã¦ã‚³ãƒ¼ãƒ‰ã‚’自分自身ã§ãƒãƒ¼ãƒ‰ã™ã‚‹ã‹ã®
ã©ã¡ã‚‰ã‹ã—ã‹ã‚りã¾ã›ã‚“。</li>
</ul>
</div></div>
<div class="bottomlang">
<p><span>翻訳済ã¿è¨€èªž: </span><a href="./en/dso.html" hreflang="en" rel="alternate" title="English"> en </a> |
<a href="./fr/dso.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="./ja/dso.html" title="Japanese"> ja </a> |
<a href="./ko/dso.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
<a href="./tr/dso.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
</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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/dso.html';
(function(w, d) {
if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
d.write('<div id="comments_thread"><\/div>');
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
(d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
}
else {
d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
}
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2015 The Apache Software Foundation.<br />ã“ã®æ–‡æ›¸ã¯ <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã§æä¾›ã•れã¦ã„ã¾ã™ã€‚.</p>
<p class="menu"><a href="./mod/">モジュール</a> | <a href="./mod/directives.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[//><!--
if (typeof(prettyPrint) !== 'undefined') {
prettyPrint();
}
//--><!]]></script>
</body></html>
ß
yôÊá½~ŒorÀ5ÖJ™={þÁEÇêe¾uç£Qk ®•ᯘG{÷?ù»ã+—]üôçƒÉÍ×ןô?wûM3X^¶ÚæŒ>{´7Ù¾ì´Kã>èo²ÎnÝ\ÿªÊj¿y· ðR£õãg/î=ÞÿfúOçÖr·o×NVÊv¿ú~ÿY+ ü¿NGêu÷ø·Ã®›þë¹HWŠûyëwÆ[eQ¶Ê¨¾SÚbÖ>öÍËÇ þ³>ä}Gçmx[o[<ÞÚ{ðýŸÏ®_ÅïqF–ÚÛvM IEND®B`‚