<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport">
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>apxs - Utilitaire pour les extensions d'Apache - Serveur HTTP Apache Version 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">
</script>

<link href="../images/favicon.png" rel="shortcut icon"></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p>
<p class="apache">Serveur HTTP Apache Version 2.4</p>
<img alt="" src="../images/feather.png"></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div>
<div id="path">
<a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="https://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.4</a> &gt; <a href="./">Programmes</a></div><div id="page-content"><div id="preamble"><h1>apxs - Utilitaire pour les extensions d'Apache</h1>
<button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button>
<div class="toplang">
<p><span>Langues Disponibles: </span><a href="../en/programs/apxs.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/programs/apxs.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ko/programs/apxs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/programs/apxs.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
</div>

    <p><code class="program"><a href="../programs/apxs.html">apxs</a></code> est un utilitaire permettant de compiler et
    d'installer des modules en tant qu'extensions du serveur HTTP
    Apache. A cet effet, un objet dynamique partag&eacute; (DSO) est compil&eacute; &agrave;
    partir d'un ou plusieurs <var>fichiers</var> sources ou objets et
    peut &ecirc;tre charg&eacute; pendant l'ex&eacute;cution du serveur Apache via la
    directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> du
    module <code class="module"><a href="../mod/mod_so.html">mod_so</a></code>.</p>

    <p>Pour pouvoir utiliser ce m&eacute;canisme d'extensions, votre
    plate-forme doit supporter la fonctionnalit&eacute; DSO, et votre binaire
    <code class="program"><a href="../programs/httpd.html">httpd</a></code> Apache doit &ecirc;tre compil&eacute; avec le module
    <code class="module"><a href="../mod/mod_so.html">mod_so</a></code>. Si ce n'est pas le cas, l'utilitaire
    <code class="program"><a href="../programs/apxs.html">apxs</a></code> vous le signalera. Vous pouvez aussi v&eacute;rifier
    vous-m&ecirc;me ces pr&eacute;requis en ex&eacute;cutant manuellement la commande :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ httpd -l</pre>
</div>

    <p>Le module <code class="module"><a href="../mod/mod_so.html">mod_so</a></code> doit faire partie de la liste
    des modules affich&eacute;e. Si ces pr&eacute;requis sont pr&eacute;sents, vous pouvez
    facilement &eacute;tendre les fonctionnalit&eacute;s de votre serveur Apache en
    installant vos propres modules &agrave; l'aide de l'utilitaire
    <code class="program"><a href="../programs/apxs.html">apxs</a></code>, via le m&eacute;canisme DSO :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/etc/httpd.conf]
$ apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _</pre>
</div>

    <p>Les arguments <var>fichiers</var> peuvent correspondre &agrave; un
    fichier source C (.c), un fichier objet (.o) ou m&ecirc;me une archive de
    biblioth&egrave;ques (.a). L'utilitaire <code class="program"><a href="../programs/apxs.html">apxs</a></code> reconna&icirc;t
    automatiquement ces extensions et utilise automatiquement les
    fichiers source C pour la compilation, et les fichiers objets et
    archives pour l'&eacute;dition de liens. Cependant, si vous utilisez des
    fichiers objets pr&eacute;compil&eacute;s, assurez-vous que leur code soit
    ind&eacute;pendant de la position (PIC), afin de pouvoir les utiliser avec
    un objet partag&eacute; charg&eacute; dynamiquement. Avec GCC, par exemple, il
    vous suffit de toujours utiliser l'option de compilation
    <code>-fpic</code>. Pour les autres compilateurs C, consultez leur
    page de manuel, ou v&eacute;rifiez les drapeaux qu'<code class="program"><a href="../programs/apxs.html">apxs</a></code>
    utilise pour compiler les fichiers objets.</p>

    <p>Pour plus de d&eacute;tails &agrave; propos du support DSO dans Apache, lire la
    documentation du module <code class="module"><a href="../mod/mod_so.html">mod_so</a></code>, ou m&ecirc;me, consultez
    le fichier source <code>src/modules/standard/mod_so.c</code>.</p>
</div>
<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif"> <a href="#synopsis">Syntaxe</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#options">Options</a></li>
<li><img alt="" src="../images/down.gif"> <a href="#examples">Exemples</a></li>
</ul><h3>Voir aussi</h3><ul class="seealso"><li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li><li><code class="program"><a href="../programs/httpd.html">httpd</a></code></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="synopsis">Syntaxe <a title="Lien permanent" href="#synopsis" class="permalink">&para;</a></h2>
    <p><code><strong>apxs</strong> -<strong>g</strong>
    [ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
    -<strong>n</strong> <var>nom-module</var></code></p>

    <p><code><strong>apxs</strong> -<strong>q</strong>
    [ -<strong>v</strong> ]
    [ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
    <var>requ&ecirc;te</var> ...</code></p>

    <p><code><strong>apxs</strong> -<strong>c</strong>
    [ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
    [ -<strong>o</strong> <var>fichier-dso</var> ]
    [ -<strong>I</strong> <var>r&eacute;pertoire-inc</var> ]
    [ -<strong>D</strong> <var>nom</var>=<var>valeur</var> ]
    [ -<strong>L</strong> <var>r&eacute;pertoire-lib</var> ]
    [ -<strong>l</strong> <var>nom-biblioth&egrave;que</var> ]
    [ -<strong>Wc,</strong><var>options-compilation</var> ]
    [ -<strong>Wl,</strong><var>options-edition-liens</var> ]
    <var>fichiers</var> ...</code></p>

    <p><code><strong>apxs</strong> -<strong>i</strong>
    [ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
    [ -<strong>n</strong> <var>nom-module</var> ]
    [ -<strong>a</strong> ]
    [ -<strong>A</strong> ]
    <var>fichier-dso</var> ...</code></p>

    <p><code><strong>apxs</strong> -<strong>e</strong>
    [ -<strong>S</strong> <var>nom</var>=<var>valeur</var> ]
    [ -<strong>n</strong> <var>nom-module</var> ]
    [ -<strong>a</strong> ]
    [ -<strong>A</strong> ]
    <var>fichier-dso</var> ...</code></p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="options">Options <a title="Lien permanent" href="#options" class="permalink">&para;</a></h2>
    <h3 id="options.common">Options courantes</h3>
      <dl>
      <dt><code>-n <var>nom-module</var></code></dt>
      <dd>D&eacute;finit explicitement le nom du module pour les options
      <code>-i</code> (install) et <code>-g</code> (g&eacute;n&eacute;ration de
      mod&egrave;les). Utilisez cette option pour sp&eacute;cifier de mani&egrave;re
      explicite le nom du module. Pour l'option <code>-g</code>, cette
      option est n&eacute;cessaire ; pour l'option <code>-i</code>,
      l'utilitaire <code class="program"><a href="../programs/apxs.html">apxs</a></code> tente de d&eacute;terminer le nom du
      module &agrave; partir des sources, ou (&agrave; d&eacute;faut) en le d&eacute;duisant du nom
      de fichier.</dd>
      </dl>
    

    <h3 id="options.query">Options de requ&ecirc;te</h3>
      <dl>
      <dt><code>-q</code></dt>
      <dd>Effectue une requ&ecirc;te &agrave; propos des variables et de
      l'environnement utilis&eacute;s pour compiler <code>httpd</code>.
      Lorsqu'elle est invoqu&eacute;e sans param&egrave;tre <var>requ&ecirc;te</var>, cette
      option affiche toutes les variables connues, ainsi que leurs
      valeurs. Le param&egrave;tre optionnel <code>-v</code> formate la liste
      affich&eacute;e.

      <p>Utilisez cette option pour d&eacute;terminer manuellement les options
      utilis&eacute;es pour compiler le binaire <code>httpd</code> qui chargera
      votre module. Ajoutez par exemple</p>
      <div class="example"><pre class="prettyprint lang-sh">INC=-I`apxs -q INCLUDEDIR`</pre>
</div>

      <p>dans vos propres Makefiles si vous devez acc&eacute;der manuellement
      aux fichiers d'en-t&ecirc;tes C d'Apache.</p></dd>
      </dl>
    

    <h3 id="options.conf">Options de configuration</h3>
      <dl>
      <dt><code>-S <var>nom</var>=<var>valeur</var></code></dt>
      <dd>Cette option permet de modifier la configuration d'apxs
      d&eacute;crite ci-dessus.</dd>
      </dl>
    

    <h3 id="options.template">Option de g&eacute;n&eacute;ration des
    mod&egrave;les</h3>
      <dl>
      <dt><code>-g</code></dt>
      <dd>Cette option permet de g&eacute;n&eacute;rer un sous-r&eacute;pertoire
      <var>nom</var> (voir option <code>-n</code>) contenant deux
      fichiers : le premier fichier est un exemple de fichier source de
      module nomm&eacute; <code>mod_<var>nom</var>.c</code> que l'on peut
      utiliser comme mod&egrave;le pour cr&eacute;er ses propres modules, ou comme
      point de d&eacute;part pour se familiariser avec le m&eacute;canisme apxs ; le
      second fichier est le <code>Makefile</code> correspondant
      facilitant la compilation et l'installation de ce module.</dd>
      </dl>
    
    <h3 id="options.dso">Options de compilation DSO</h3>
      <dl>
      <dt><code>-c</code></dt>
      <dd>Cette option indique une op&eacute;ration de compilation. Tout
      d'abord, les fichiers sources (.c) sp&eacute;cifi&eacute;s par
      <var>fichiers</var> sont compil&eacute;s en fichiers objets
      correspondants (.o), puis un objet dynamiquement partag&eacute;
      <var>fichier-dso</var> est compil&eacute; via une &eacute;dition de liens de ces
      fichiers objets avec les autres fichiers objets (.o and .a)
      sp&eacute;cifi&eacute;s par <var>fichiers</var>. Si l'option <code>-o</code>
      n'est pas sp&eacute;cifi&eacute;e, le nom du fichier r&eacute;sultant est d&eacute;duit du
      premier nom de fichier sp&eacute;cifi&eacute; par <var>fichiers</var>, et ainsi
      prend en g&eacute;n&eacute;ral pour valeur par d&eacute;faut
      <code>mod_<var>nom</var>.so</code>.</dd>

      <dt><code>-o <var>fichier-dso</var></code></dt>
      <dd>Sp&eacute;cifie de mani&egrave;re explicite le nom de fichier de l'objet
      partag&eacute; dynamiquement cr&eacute;&eacute;. Sans cette option, et si le nom ne
      peut pas &ecirc;tre d&eacute;duit de la liste <var>fichiers</var>, c'est le nom
      par d&eacute;faut <code>mod_unknown.so</code> qui sera utilis&eacute;.</dd>

      <dt><code>-D <var>nom</var>=<var>valeur</var></code></dt>
      <dd>Cette option est transmise directement &agrave; la commande de
      compilation. Vous pouvez l'utiliser pour ajouter vos propres
      d&eacute;finitions au processus de compilation. </dd>

      <dt><code>-I <var>r&eacute;pertoire-inc</var></code></dt>
      <dd>Cette option est transmise directement &agrave; la commande de
      compilation. Vous pouvez l'utiliser pour ajouter vos propres
      chemins de recherche des r&eacute;pertoires <code>include</code> au processus de
      compilation.</dd>

      <dt><code>-L <var>r&eacute;pertoire-lib</var></code></dt>
      <dd>Cette option est transmise directement &agrave; la commande d'&eacute;dition
      de liens. Vous pouvez l'utiliser pour ajouter vos propres
      chemins de recherche des r&eacute;pertoires de biblioth&egrave;ques au processus
      de compilation.</dd>

      <dt><code>-l <var>nom-biblioth&egrave;que</var></code></dt>
      <dd>Cette option est transmise directement &agrave; la commande d'&eacute;dition
      de liens. Vous pouvez l'utiliser pour ajouter vos propres
      biblioth&egrave;ques &agrave; rechercher au processus de compilation.</dd>

      <dt><code>-Wc,<var>options-compilation</var></code></dt>
      <dd>Cette option transmet les <var>options-compilation</var> en
      tant qu'options suppl&eacute;mentaires &agrave; la commande <code>libtool
      --mode=compile</code>. Vous pouvez l'utiliser pour ajouter des
      options locales sp&eacute;cifiques au compilateur.</dd>

      <dt><code>-Wl,<var>options-edition-liens</var></code></dt>
      <dd>Cette option transmet les <var>options-edition-liens</var> en
      tant qu'options suppl&eacute;mentaires &agrave; la commande <code>libtool
      --mode=link</code>. Vous pouvez l'utiliser pour ajouter des
      options locales sp&eacute;cifiques &agrave; l'&eacute;diteur de liens.</dd>
      
      <dt><code>-p</code></dt>
      <dd>Avec cette option, apxs effectue l'&eacute;dition de liens avec les
      biblioth&egrave;ques apr/apr-util. Elle permet de compiler les programmes
      helper qui utilisent les biblioth&egrave;ques apr/apr-util.</dd>
      </dl>
    

    <h3 id="options.dsoinstall">Options d'installation et de configuration DSO</h3>
    
      <dl>
      <dt><code>-i</code></dt>
      <dd>Cette option indique une op&eacute;ration d'installation et installe
      un ou plusieurs objets dynamiquement partag&eacute;s dans le r&eacute;pertoire
      <var>modules</var> du serveur.</dd>

      <dt><code>-a</code></dt>
      <dd>Cette option active le module en ajoutant automatiquement une
      directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>
      correspondante au fichier de configuration d'Apache
      <code>httpd.conf</code>, ou en l'activant s'il existe d&eacute;j&agrave;.</dd>

      <dt><code>-A</code></dt>
      <dd>Identique &agrave; l'option <code>-a</code>, &agrave; la diff&eacute;rence que la
      directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> cr&eacute;&eacute;e
      est pr&eacute;fix&eacute;e par un caract&egrave;re di&egrave;se (<code>#</code>) ; le module
      est ainsi pr&eacute;par&eacute; pour une activation ult&eacute;rieure, mais est
      d&eacute;sactiv&eacute; dans un premier temps.</dd>

      <dt><code>-e</code></dt>
      <dd>Cette option indique une op&eacute;ration d'&eacute;dition de liens et peut
      &ecirc;tre utilis&eacute;e avec les options <code>-a</code> et <code>-A</code>
      de la m&ecirc;me mani&egrave;re qu'au cours de l'op&eacute;ration d'installation pour
      &eacute;diter le fichier de configuration d'Apache
      <code>httpd.conf</code>, sans toutefois installer le module.</dd>
      </dl>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div>
<div class="section">
<h2 id="examples">Exemples <a title="Lien permanent" href="#examples" class="permalink">&para;</a></h2>
    <p>Supposons que vous disposiez d'un module Apache nomm&eacute;
    <code>mod_foo.c</code> et destin&eacute; &agrave; &eacute;tendre les fonctionnalit&eacute;s du
    serveur. Pour ce faire, vous devez tout d'abord compiler le fichier
    source C en un objet partag&eacute; pouvant &ecirc;tre charg&eacute; dans le serveur
    Apache &agrave; l'ex&eacute;cution, via la commande suivante :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$ _</pre>
</div>

    <p>Vous devez ensuite v&eacute;rifier la configuration d'Apache en vous
    assurant qu'une directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> est bien pr&eacute;sente pour
    charger cet objet partag&eacute;. Pour simplifier cette &eacute;tape,
    <code class="program"><a href="../programs/apxs.html">apxs</a></code> propose une m&eacute;thode automatique d'installation de
    l'objet partag&eacute; dans son r&eacute;pertoire "modules", et de mise &agrave; jour du
    fichier <code>httpd.conf</code> en cons&eacute;quence. Pour b&eacute;n&eacute;ficier de
    cette automatisation, utilisez la commande suivante :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ apxs -i -a mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/conf/httpd.conf]
$ _</pre>
</div>

    <p>Une ligne contenant</p>

    <div class="example"><pre class="prettyprint lang-config">LoadModule foo_module modules/mod_foo.so</pre>
</div>

    <p>est alors ajout&eacute;e au fichier de configuration si ce n'est pas
    d&eacute;j&agrave; fait. Si vous voulez que le module soit d&eacute;sactiv&eacute; par d&eacute;faut,
    utilisez l'option <code>-A</code> comme suit :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ apxs -i -A mod_foo.c</pre>
</div>

    <p>Pour un test rapide du m&eacute;canisme apxs, vous pouvez cr&eacute;er un
    exemple de mod&egrave;le de module Apache, ainsi que le Makefile
    correspondant via :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ apxs -g -n foo
Creating [DIR]  foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
$ _</pre>
</div>

    <p>Vous pouvez ensuite compiler imm&eacute;diatement ce module exemple en
    objet partag&eacute; et le charger dans le serveur Apache :</p>

    <div class="example"><pre class="prettyprint lang-sh">$ cd foo
$ make all reload
apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules
...
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module `foo' in /path/to/apache/conf/httpd.conf]
apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _</pre>
</div>

</div></div>
<div class="bottomlang">
<p><span>Langues Disponibles: </span><a href="../en/programs/apxs.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="../fr/programs/apxs.html" title="Fran&ccedil;ais">&nbsp;fr&nbsp;</a> |
<a href="../ko/programs/apxs.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/programs/apxs.html" hreflang="tr" rel="alternate" title="T&uuml;rk&ccedil;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autoris&eacute; sous <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
var langToggle = document.querySelector('.lang-toggle');
var topLang = document.querySelector('.toplang');
if (langToggle && topLang) {
    langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); });
}
var qv = document.getElementById('quickview');
if (qv) {
    document.body.appendChild(qv);
    var qvBtn = document.createElement('button');
    qvBtn.className = 'qv-toggle';
    qvBtn.setAttribute('aria-label', 'Toggle page navigation');
    qvBtn.innerHTML = '&#9776;';
    document.body.appendChild(qvBtn);
    qvBtn.addEventListener('click', function() {
        var isOpen = qv.classList.toggle('open');
        if (isOpen) {
            qv.style.top = window.scrollY + 10 + 'px';
        }
    });
    window.addEventListener('scroll', function() { qv.classList.remove('open'); });
}
//--><!]]></script>
</body></html>