blob: b94336ee790d7cc85982adac672e309a80d9244e [file] [log] [blame]
<?xml version='1.0' encoding='EUC-KR' ?>
<!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ko.xsl"?>
<!-- English Revision: 105989:1494952 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<manualpage metafile="apxs.xml.meta">
<parentdocument href="./">Programs</parentdocument>
<title>apxs - APache eXtenSion µµ±¸</title>
<summary>
<p><code>apxs</code>´Â ¾ÆÆÄÄ¡ ÇÏÀÌÆÛÅؽºÆ® Àü¼Û ÇÁ·ÎÅäÄÝ
(HTTP) ¼­¹öÀÇ È®Àå¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â µµ±¸ÀÌ´Ù. ÀÌ
µµ±¸´Â ¿©·¯ ¼Ò½º¿Í ¿ÀºêÁ§Æ®<var>ÆÄÀÏ</var>À» °¡Áö°í,
<module>mod_so</module>ÀÇ <directive
module="mod_so">LoadModule</directive> Áö½Ã¾î·Î ½ÇÇàÁß¿¡
¾ÆÆÄÄ¡ ¼­¹ö·Î ÀоîµéÀÏ ¼ö ÀÖ´Â µ¿Àû°øÀ¯°´Ã¼(DSO)¸¦ ¸¸µç´Ù.</p>
<p>±×·¡¼­ ÀÌ·± È®Àå¹æ½ÄÀ» »ç¿ëÇÏ·Á¸é Ç÷¡ÆûÀÌ DSO ±â´ÉÀ»
Áö¿øÇÏ°í ¾ÆÆÄÄ¡ <code>httpd</code> ½ÇÇàÆÄÀÏÀ»
<module>mod_so</module> ¸ðµâ°ú °°ÀÌ ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù.
<code>apxs</code> µµ±¸´Â ÀÌ Á¶°ÇÀÌ ¸¸Á·ÇÏÁö¾ÊÀ¸¸é ½ÇÇàÇÏÁö
¾Ê´Â´Ù. Á÷Á¢ ¸í·É¾î¸¦ ½ÇÇàÇÏ¿© Á¶°ÇÀÌ ¸¸Á·ÇÏ´ÂÁö ¾Ë¾Æº¼
¼ö ÀÖ´Ù</p>
<example>
$ httpd -l
</example>
<p>¸ñ·Ï¿¡ <module>mod_so</module> ¸ðµâÀÌ ³ª¿Í¾ß ÇÑ´Ù. Á¶°ÇÀ»
¸¸Á·Çϸé <code>apxs</code> µµ±¸·Î DSO ¸ðµâÀ» ¼³Ä¡ÇÏ¿©
¾ÆÆÄÄ¡¼­¹öÀÇ ±â´ÉÀ» ½±°Ô È®ÀåÇÒ ¼ö ÀÖ´Ù:</p>
<example>
$ apxs -i -a -c mod_foo.c<br />
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c<br />
ld -Bshareable -o mod_foo.so mod_foo.o<br />
cp mod_foo.so /path/to/apache/modules/mod_foo.so<br />
chmod 755 /path/to/apache/modules/mod_foo.so<br />
[activating module `foo' in /path/to/apache/etc/httpd.conf]<br />
$ apachectl restart<br />
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start<br />
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
/path/to/apache/sbin/apachectl restart: httpd started<br />
$ _
</example>
<p>¾Æ±Ô¸ÕÆ® <var>files</var>¿¡´Â C ¼Ò½ºÆÄÀÏ (.c) À̳ª
¿ÀºêÁ§Æ®ÆÄÀÏ (.o), ¶óÀ̺귯¸®¸ðÀ½ (.a)À» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
<code>apxs</code> µµ±¸´Â È®ÀåÀÚ¸¦ º¸°í ÀÚµ¿À¸·Î C ¼Ò½ºÆÄÀÏÀº
ÄÄÆÄÀÏÇÏ°í, ¿ÀºêÁ§Æ®¿Í ¸ðÀ½ÆÄÀÏÀº ¸µÅ©¿¡¸¸ »ç¿ëÇÑ´Ù. ±×·¯³ª
ÄÄÆÄÀÏÇÑ ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÏ·Á¸é µ¿ÀûÀ¸·Î ÀоîµéÀÏ ¼ö ÀÖ´Â
°øÀ¯°´Ã¼·Î »ç¿ëÇϱâÀ§ÇØ ¹Ýµå½Ã ¿ÀºêÁ§Æ®¸¦ À§Ä¡µ¶¸³ÄÚµå(PIC,
position independent code)·Î ÄÄÆÄÀÏÇØ¾ß ÇÑ´Ù. GCCÀÇ °æ¿ì
<code>-fpic</code>À» »ç¿ëÇÏ¸é µÈ´Ù. ´Ù¸¥ C ÄÄÆÄÀÏ·¯´Â ¼³¸í¼­¸¦
Âü°íÇϰųª <code>apxs</code>°¡ ¿ÀºêÁ§Æ®ÆÄÀÏÀ» ÄÄÆÄÀÏÇÒ¶§
»ç¿ëÇÏ´Â ¿É¼ÇÀ» Âü°íÇ϶ó.</p>
<p>¾ÆÆÄÄ¡ÀÇ DSO Áö¿ø¿¡ ´ëÇÑ ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº
<module>mod_so</module> ¹®¼­¸¦ Âü°íÇϰųª
<code>src/modules/standard/mod_so.c</code> ¼Ò½ºÆÄÀÏÀ» ÀоîºÁ¶ó.</p>
</summary>
<seealso><a href="apachectl.html">apachectl</a></seealso>
<seealso><a href="httpd.html">httpd</a></seealso>
<section id="synopsis"><title>°³¿ä</title>
<p><code><strong>apxs</strong> -<strong>g</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
-<strong>n</strong> <var>modname</var></code></p>
<p><code><strong>apxs</strong> -<strong>q</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
<var>query</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>c</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
[ -<strong>o</strong> <var>dsofile</var> ]
[ -<strong>I</strong> <var>incdir</var> ]
[ -<strong>D</strong> <var>name</var>=<var>value</var> ]
[ -<strong>L</strong> <var>libdir</var> ]
[ -<strong>l</strong> <var>libname</var> ]
[ -<strong>Wc,</strong><var>compiler-flags</var> ]
[ -<strong>Wl,</strong><var>linker-flags</var> ]
<var>files</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>i</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
[ -<strong>n</strong> <var>modname</var> ]
[ -<strong>a</strong> ]
[ -<strong>A</strong> ]
<var>dso-file</var> ...</code></p>
<p><code><strong>apxs</strong> -<strong>e</strong>
[ -<strong>S</strong> <var>name</var>=<var>value</var> ]
[ -<strong>n</strong> <var>modname</var> ]
[ -<strong>a</strong> ]
[ -<strong>A</strong> ]
<var>dso-file</var> ...</code></p>
</section>
<section id="options"><title>¿É¼Ç</title>
<section id="options.common"><title>°øÅë ¿É¼Ç</title>
<dl>
<dt><code>-n <var>modname</var></code></dt>
<dd><code>-i</code> (install)°ú <code>-g</code> (template
generation) ¿É¼ÇÀ» »ç¿ëÇÒ¶§ Á÷Á¢ ¸ðµâ¸íÀ» ÁöÁ¤ÇÑ´Ù. ÀÌ
¿É¼ÇÀ» »ç¿ëÇÏ¿© ¸ðµâ¸íÀ» Á÷Á¢ ÁöÁ¤ÇÑ´Ù. <code>-g</code>
¿É¼ÇÀ» »ç¿ëÇÑ´Ù¸é ÀÌ ¿É¼ÇÀ» ¹Ýµå½Ã »ç¿ëÇؾßÇÏ°í,
<code>-i</code> ¿É¼ÇÀ» »ç¿ëÇÑ´Ù¸é <code>apxs</code> µµ±¸´Â
¼Ò½º³ª (¸¶Áö¸· ½Ãµµ·Î) ÆÄÀϸíÀ» °¡Áö°í À̸§À» ÃßÃøÇÑ´Ù.</dd>
</dl>
</section>
<section id="options.query"><title>ÁúÀÇ ¿É¼Ç</title>
<dl>
<dt><code>-q</code></dt>
<dd><code>apxs</code>ÀÇ ¼³Á¤°ªÀ» ¾Ë¾Æ³½´Ù. <var>query</var>¿¡´Â
´ÙÀ½À» »ç¿ëÇÒ ¼ö ÀÖ´Ù: <code>CC</code>, <code>CFLAGS</code>,
<code>CFLAGS_SHLIB</code>, <code>INCLUDEDIR</code>,
<code>LD_SHLIB</code>, <code>LDFLAGS_SHLIB</code>,
<code>LIBEXECDIR</code>, <code>LIBS_SHLIB</code>,
<code>SBINDIR</code>, <code>SYSCONFDIR</code>, <code>TARGET</code>.
<p>¼³Á¤À» Á÷Á¢ ¾Ë¾Æ³¾¶§ »ç¿ëÇÑ´Ù.</p>
<example>
INC=-I`apxs -q INCLUDEDIR`
</example>
<p>¿¹¸¦ µé¾î, ¾ÆÆÄÄ¡ C Çì´õÆÄÀÏÀ» Á÷Á¢ Á¢±ÙÇÑ´Ù¸é
Makefile¿¡¼­ À§¿Í °°ÀÌ »ç¿ëÇÑ´Ù.</p></dd>
</dl>
</section>
<section id="options.conf"><title>¼³Á¤ ¿É¼Ç</title>
<dl>
<dt><code>-S <var>name</var>=<var>value</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀº À§¿¡¼­ ¼³¸íÇÑ apxs ¼³Á¤À» º¯°æÇÑ´Ù.</dd>
</dl>
</section>
<section id="options.template"><title>°ßº»(template) »ý¼º ¿É¼Ç</title>
<dl>
<dt><code>-g</code></dt>
<dd>ÇÏÀ§µð·ºÅ丮 <var>name</var>À» ¸¸µé°í (<code>-n</code>
¿É¼Ç Âü°í) ±×°÷¿¡ ÆÄÀÏ µÎ°³¸¦ ¸¸µç´Ù: ÇÑ ÆÄÀÏÀº
<code>mod_<var>name</var>.c</code>¶ó´Â °ßº» ¸ðµâ¼Ò½ºÆÄÀÏ·Î,
ÀÚ½ÅÀÇ ¸ðµâÀ» ¸¸µé¶§ °ßº»À¸·Î »ç¿ëÇϰųª apxs ±â´ÉÀ»
½ÃÇèÇغ¼¶§ »ç¿ëÇÑ´Ù. ´Ù¸¥ ÆÄÀÏÀº ÀÌ ¸ðµâÀ» ½±°Ô ÄÄÆÄÀÏÇÏ°í
¼³Ä¡ÇϱâÀ§ÇÑ <code>Makefile</code>ÀÌ´Ù.</dd>
</dl>
</section>
<section id="options.dso"><title>DSO ÄÄÆÄÀÏ ¿É¼Ç</title>
<dl>
<dt><code>-c</code></dt>
<dd>ÄÄÆÄÀÏÀ» Áö½ÃÇÑ´Ù. ¸ÕÀú <var>files</var>¿¡¼­ C
¼Ò½ºÆÄÀϵé(.c)À» ¿ÀºêÁ§Æ®ÆÄÀÏ(.o)·Î ÄÄÆÄÀÏÇÏ°í,
<var>files</var>ÀÇ ³ª¸ÓÁö ¿ÀºêÁ§Æ®ÆÄÀϵé(.o°ú .a)°ú
¸µÅ©ÇÏ¿© µ¿Àû°øÀ¯°´Ã¼ <var>dsofile</var>À» ¸¸µç´Ù.
<code>-o</code> ¿É¼ÇÀ» »ç¿ëÇÏÁö¾ÊÀ¸¸é <var>files</var>ÀÇ
ù¹ø° ÆÄÀÏ¸í¿¡¼­ À̸§À» ÃßÃøÇÏ¿© º¸Åë
<code>mod_<var>name</var>.so</code>¸¦ »ç¿ëÇÑ´Ù.</dd>
<dt><code>-o <var>dsofile</var></code></dt>
<dd>»ý¼ºÇÒ µ¿Àû°øÀ¯°´Ã¼ ÆÄÀϸíÀ» Á÷Á¢ ÁöÁ¤ÇÑ´Ù. À̸§À»
ÁöÁ¤ÇÏÁö¾Ê°í <var>files</var> ¸ñ·Ï¿¡¼­ À̸§À» ÃßÃøÇÏÁö
¸øÇÏ¸é ¸¶Áö¸·À¸·Î <code>mod_unknown.so</code>¸¦ À̸§À¸·Î
»ç¿ëÇÑ´Ù.</dd>
<dt><code>-D <var>name</var>=<var>value</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀ» ÄÄÆÄÀÏ ¸í·É¾î·Î Á÷Á¢ Àü´ÞÇÑ´Ù.
ÄÄÆÄÀ϶§ ÀÚ½ÅÀÇ defineÀ» Ãß°¡ÇÑ´Ù.</dd>
<dt><code>-I <var>incdir</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀ» ÄÄÆÄÀÏ ¸í·É¾î·Î Á÷Á¢ Àü´ÞÇÑ´Ù.
ÄÄÆÄÀ϶§ include¸¦ ãÀ» µð·ºÅ丮¸¦ Ãß°¡ÇÑ´Ù.</dd>
<dt><code>-L <var>libdir</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀ» ¸µÄ¿ ¸í·É¾î·Î Á÷Á¢ Àü´ÞÇÑ´Ù.
ÄÄÆÄÀ϶§ ¶óÀ̺귯¸®¸¦ ãÀ» µð·ºÅ丮¸¦ Ãß°¡ÇÑ´Ù.</dd>
<dt><code>-l <var>libname</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀ» ¸µÄ¿ ¸í·É¾î·Î Á÷Á¢ Àü´ÞÇÑ´Ù.
ÄÄÆÄÀ϶§ »ç¿ëÇÒ ¶óÀ̺귯¸®¸¦ Ãß°¡ÇÑ´Ù.</dd>
<dt><code>-Wc,<var>compiler-flags</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀº Ãß°¡ ¿É¼Ç <var>compiler-flags</var>¸¦
<code>libtool --mode=compile</code> ¸í·É¾î·Î Àü´ÞÇÑ´Ù.
ÄÄÆÄÀÏ·¯ ƯÀ¯ÀÇ ¿É¼ÇÀ» Ãß°¡ÇÒ¶§ »ç¿ëÇÑ´Ù.</dd>
<dt><code>-Wl,<var>linker-flags</var></code></dt>
<dd>ÀÌ ¿É¼ÇÀº Ãß°¡ ¿É¼Ç <var>linker-flags</var>¸¦
<code>libtool --mode=link</code> ¸í·É¾î·Î Àü´ÞÇÑ´Ù. ¸µÄ¿
ƯÀ¯ÀÇ ¿É¼ÇÀ» Ãß°¡ÇÒ¶§ »ç¿ëÇÑ´Ù.</dd>
</dl>
</section>
<section id="options.dsoinstall">
<title>DSO ¼³Ä¡°ú ¼³Á¤ ¿É¼Ç</title>
<dl>
<dt><code>-i</code></dt>
<dd>¼³Ä¡¸¦ Áö½ÃÇÑ´Ù. ¿©·¯ µ¿Àû°øÀ¯°´Ã¼¸¦ ¼­¹öÀÇ
<var>modules</var> µð·ºÅ丮¿¡ ¼³Ä¡ÇÑ´Ù.</dd>
<dt><code>-a</code></dt>
<dd>¾ÆÆÄÄ¡ <code>httpd.conf</code> ¼³Á¤ÆÄÀÏ¿¡ ÀûÀýÇÑ
<directive module="mod_so">LoadModule</directive> ÁÙÀ»
Ãß°¡Çϰųª ÀÌ¹Ì ÀÖ´Ù¸é È°¼ºÈ­ÇÏ¿© ¸ðµâÀ» »ç¿ëÇϵµ·Ï
¸¸µç´Ù.</dd>
<dt><code>-A</code></dt>
<dd><code>-a</code>¿Í ºñ½ÁÇÏÁö¸¸, <directive
module="mod_so">LoadModule</directive> Áö½Ã¾î ¾Õ¿¡
¿ì¹°Á¤ÀÚ(<code>#</code>)¸¦ ºÙÀδÙ. <em>Áï</em>, ÇöÀç´Â
»ç¿ëÇÏÁö¾ÊÁö¸¸ ³ªÁß¿¡ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸ðµâÀ» ÁغñÇÑ´Ù.</dd>
<dt><code>-e</code></dt>
<dd>ÆíÁýÀ» Áö½ÃÇÑ´Ù. <code>-a</code> ȤÀº <code>-A</code>
¿É¼Ç°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç, <code>-i</code> ¸í·É°ú
ºñ½ÁÇÏÁö¸¸ ¸ðµâÀ» ¼³Ä¡ÇÏÁö¾Ê°í ¾ÆÆÄÄ¡
<code>httpd.conf</code> ¼³Á¤ÆÄÀϸ¸ ÆíÁýÇÑ´Ù.</dd>
</dl>
</section>
</section>
<section id="examples"><title>¿¹Á¦</title>
<p>¾ÆÆÄÄ¡¼­¹öÀÇ ±â´ÉÀ» È®ÀåÇÏ´Â <code>mod_foo.c</code>¶ó´Â
¾ÆÆÄÄ¡ ¸ðµâÀÌ ÀÖ´Ù°í °¡Á¤ÇÏÀÚ. ¸ÕÀú ´ÙÀ½ ¸í·É¾î¸¦ »ç¿ëÇÏ¿©
C ¼Ò½º¸¦ ¾ÆÆÄÄ¡ ¼­¹ö°¡ ÀоîµéÀÏ °øÀ¯°´Ã¼·Î ÄÄÆÄÀÏÇÑ´Ù:</p>
<example>
$ apxs -c mod_foo.c<br />
/path/to/libtool --mode=compile gcc ... -c mod_foo.c<br />
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
$ _
</example>
<p>±×¸®°í ÀÌ °øÀ¯°´Ã¼¸¦ ÀоîµéÀÌ´Â <directive
module="mod_so">LoadModule</directive> Áö½Ã¾î¸¦ ¾ÆÆÄÄ¡
¼³Á¤¿¡ Ãß°¡ÇÑ´Ù. <code>apxs</code>´Â ÀÚµ¿À¸·Î °øÀ¯°´Ã¼¸¦
"modules" µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ°í <code>httpd.conf</code> ÆÄÀÏÀ»
¾Ë¸Â°Ô ¼öÁ¤ÇÏ¿© °£´ÜÈ÷ ÀÛ¾÷À» ¸¶Ä£´Ù. ´ÙÀ½ °°ÀÌ ½ÇÇàÇÑ´Ù:</p>
<example>
$ apxs -i -a mod_foo.la<br />
/path/to/instdso.sh mod_foo.la /path/to/apache/modules<br />
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so<br />
[/path/to/apache/conf/httpd.conf¿¡¼­ `foo' ¸ðµâÀ» È°¼ºÈ­ÇÑ´Ù]<br />
$ _
</example>
<p>±×·¯¸é ´ÙÀ½°ú °°Àº ÁÙÀ»</p>
<example>
LoadModule foo_module modules/mod_foo.so
</example>
<p>¼³Á¤ÆÄÀÏ¿¡ ¾ø´Ù¸é Ãß°¡ÇÑ´Ù. ÀÌ ¼³Á¤À» ±âº»ÀûÀ¸·Î »ç¿ëÇÏÁö
¾Ê´Â´Ù¸é <code>-A</code> ¿É¼ÇÀ» »ç¿ëÇÑ´Ù. <em>Áï</em></p>
<example>
$ apxs -i -A mod_foo.c
</example>
<p>apxs¸¦ ½±°Ô »ç¿ëÇÏ·Á°í ´ÙÀ½°ú °°ÀÌ ¾ÆÆÄÄ¡ ¸ðµâ °ßº»°ú
MakefileÀ» ¸¸µé ¼ö ÀÖ´Ù:</p>
<example>
$ apxs -g -n foo<br />
Creating [DIR] foo<br />
Creating [FILE] foo/Makefile<br />
Creating [FILE] foo/modules.mk<br />
Creating [FILE] foo/mod_foo.c<br />
Creating [FILE] foo/.deps<br />
$ _
</example>
<p>±×·±ÈÄ ¹Ù·Î °ßº» ¸ðµâÀ» °øÀ¯°´Ã¼·Î ÄÄÆÄÀÏÇÏ¿© ¾ÆÆÄÄ¡
¼­¹ö°¡ Àеµ·ÏÇÑ´Ù:</p>
<example>
$ cd foo<br />
$ make all reload<br />
apxs -c mod_foo.c<br />
/path/to/libtool --mode=compile gcc ... -c mod_foo.c<br />
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo<br />
apxs -i -a -n "foo" mod_foo.la<br />
/path/to/instdso.sh mod_foo.la /path/to/apache/modules<br />
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so<br />
[/path/to/apache/conf/httpd.conf¿¡¼­ `foo' ¸ðµâÀ» È°¼ºÈ­ÇÑ´Ù]<br />
apachectl restart<br />
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start<br />
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module<br />
/path/to/apache/sbin/apachectl restart: httpd started<br />
$ _
</example>
</section>
</manualpage>