Subversion Repositories svn LFS-FR

Rev

Rev 1344 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="ch-system-binutils" role="wrap">
  <?dbhtml filename="binutils.html"?>

  <sect1info condition="script">
    <productname>binutils</productname>
    <productnumber>&binutils-version;</productnumber>
    <address>&binutils-url;</address>
  </sect1info>

  <title>Binutils-&binutils-version;</title>

  <indexterm zone="ch-system-binutils">
    <primary sortas="a-Binutils">Binutils</primary>
  </indexterm>

  <sect2 role="package">
    <title/>

    <para>Le paquet Binutils contient un éditeur de liens, un assembleur
    et d'autres outils pour gérer des fichiers objets.</para>

    <segmentedlist>
      <segtitle>&buildtime;</segtitle>
      <segtitle>&diskspace;</segtitle>

      <seglistitem>
        <seg>&binutils-ch6-sbu;</seg>
        <seg>&binutils-ch6-du;</seg>
      </seglistitem>
    </segmentedlist>

  </sect2>

  <sect2 role="installation">
    <title>Installation de Binutils</title>

    <para>Vérifiez que les pseudo-terminaux (PTY) fonctionnent
    correctement dans l'environnement en effectuant un simple test&nbsp;:</para>

<screen><userinput remap="test">expect -c "spawn ls"</userinput></screen>

    <para>Cette commande devrait afficher ce qui suit&nbsp;:</para>
   
<screen><computeroutput>spawn ls</computeroutput></screen>

    <para>Si, à la place, la sortie affiche le message ci-dessous, c'est que
    l'environnement n'est pas paramétré pour la bonne opération PTY. Vous
    devez résoudre ce problème avant de lancer les suites de test de Binutils
    et de GCC&nbsp;:</para>

<screen><computeroutput>The system has no more ptys.
Ask your system administrator to create more.</computeroutput></screen>

    <para>Supprimez l'installation d'un fichier obsolète
    <filename>standards.info</filename> puisqu'un plus récent est installe plus
    tard dans les instructions pour Autoconf&nbsp;:</para>
   
<screen><userinput remap="pre">rm -fv etc/standards.info
sed -i.bak '/^INFO/s/standards.info //' etc/Makefile.in</userinput></screen>

    <para>La documentation de Binutils recommande de construire Binutils
    à l'extérieur du répertoire des sources dans un répertoire
    dédié&nbsp;:</para>

<screen><userinput remap="pre">mkdir -v ../binutils-build
cd ../binutils-build</userinput></screen>

    <para>Préparez la compilation de Binutils&nbsp;:</para>

<screen><userinput remap="configure">../binutils-&binutils-version;/configure --prefix=/usr \
    --enable-shared</userinput></screen>

    <para>Compilez le paquet&nbsp;:</para>

<screen><userinput remap="make">make tooldir=/usr</userinput></screen>

    <variablelist>
      <title>Voici la signification des options de configure&nbsp;:</title>

      <varlistentry>
        <term><parameter>tooldir=/usr</parameter></term>
        <listitem>
          <para>Normalement, le répertoire
          <filename class="directory">tooldir</filename> (celui où seront
          placés les exécutables) est configuré avec

          <filename class="directory">$(exec_prefix)/$(target_alias)</filename>.

          Par exemple, les
          machines x86_64 l'étendront en
          <filename class="directory">/usr/x86_64-unknown-linux-gnu</filename>.
          Comme il s'agit d'un système personnalisé, nous n'avons pas
          besoin d'un répertoire spécifique à notre cible dans

          <filename class="directory">/usr</filename>.

          <filename class="directory">$(exec_prefix)/$(target_alias)</filename>

          serait utilisée si le système avait pour but une cross-compilation (par exemple, compiler un paquet
          sur une machine Intel qui génère du code pouvant être exécuté sur des machines
          PowerPC).</para>
        </listitem>
      </varlistentry>

    </variablelist>

    <important>
      <para>La suite de tests de Binutils dans cette section est
      considérée comme critique. Ne la sautez sous aucun prétexte.</para>
    </important>

    <para>Testez les résultats&nbsp;:</para>

<screen><userinput remap="test">make CC="gcc -O2 -fno-stack-protector -nopie -fno-PIE -no-warn-shared-textrel" \
    CXX="g++ -O2 -fno-stack-protector -nopie -fno-PIE -no-warn-shared-textrel" check</userinput></screen>

    <para>Installez le paquet&nbsp;:</para>

<screen><userinput remap="install">make tooldir=/usr install</userinput></screen>

    <para>Installez le fichier d'en-tête

     <filename class="headerfile">libiberty</filename> requis par
     certains paquets&nbsp;:</para>
<screen><userinput remap="install">cp -v ../binutils-&binutils-version;/include/libiberty.h /usr/include</userinput></screen>

  </sect2>


  <sect2 id="contents-binutils" role="content">
    <title>Contenu de Binutils</title>

    <segmentedlist>
      <segtitle>Programmes installés</segtitle>
      <segtitle>Bibliothèques installées</segtitle>
      <segtitle>Répertoire installé</segtitle>

      <seglistitem>
        <seg>addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump,
        ranlib, readelf, size, strings et strip</seg>
        <seg>libiberty.a, libbfd.{a,so} et libopcodes.{a,so}</seg>
        <seg>/usr/lib/ldscripts</seg>
      </seglistitem>
    </segmentedlist>

    <variablelist>
      <bridgehead renderas="sect3">Descriptions courtes</bridgehead>
      <?dbfo list-presentation="list"?>
     
      <?dbhtml list-presentation="table"?>

      <varlistentry id="addr2line">
        <term><command>addr2line</command></term>
        <listitem>
          <para>Traduit les adresses de programme en noms de fichier et numéros de
          ligne&nbsp;; suivant une adresse et le nom d'un exécutable, il utilise les
          informations de débogage disponibles dans l'exécutable pour déterminer le
          fichier source et le numéro de ligne associé à cette adresse</para>
          <indexterm zone="ch-system-binutils addr2line">
            <primary sortas="b-addr2line">addr2line</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ar">
        <term><command>ar</command></term>
        <listitem>
          <para>Crée, modifie et extrait à partir d'archives</para>
          <indexterm zone="ch-system-binutils ar">
            <primary sortas="b-ar">ar</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="as">
        <term><command>as</command></term>
        <listitem>
          <para>Un assembleur qui assemble la sortie de <command>gcc</command>
          en un fichier objet</para>
          <indexterm zone="ch-system-binutils as">
            <primary sortas="b-as">as</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="c-filt">
        <term><command>c++filt</command></term>
        <listitem>
          <para>Utilisé par l'éditeur de liens pour récupérer les symboles C++
          et Java, et pour empêcher les fonctions surchargées d'arrêter
          brutalement le programme</para>
          <indexterm zone="ch-system-binutils c-filt">
            <primary sortas="b-c++filt">c++filt</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="gprof">
        <term><command>gprof</command></term>
        <listitem>
          <para>Affiche les données de profilage d'appels dans un graphe</para>
          <indexterm zone="ch-system-binutils gprof">
            <primary sortas="b-gprof">gprof</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ld">
        <term><command>ld</command></term>
        <listitem>
          <para>Un éditeur de liens combinant un certain nombre d'objets et de fichiers
          archives en un seul fichier, en déplaçant leur données et en regroupant les
          références de symboles</para>
          <indexterm zone="ch-system-binutils ld">
            <primary sortas="b-ld">ld</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="nm">
        <term><command>nm</command></term>
        <listitem>
          <para>Liste les symboles disponibles dans un fichier objet</para>
          <indexterm zone="ch-system-binutils nm">
            <primary sortas="b-nm">nm</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="objcopy">
        <term><command>objcopy</command></term>
        <listitem>
          <para>Traduit un type de fichier objet en un autre</para>
          <indexterm zone="ch-system-binutils objcopy">
            <primary sortas="b-objcopy">objcopy</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="objdump">
        <term><command>objdump</command></term>
        <listitem>
          <para>Affiche des informations sur le fichier objet donné, les options
          contrôlant les informations à afficher&nbsp;; l'information affichée est
          surtout utile aux programmeurs qui travaillent sur les outils de compilation
          </para>
          <indexterm zone="ch-system-binutils objdump">
            <primary sortas="b-objdump">objdump</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="ranlib">
        <term><command>ranlib</command></term>
        <listitem>
          <para>Génère un index du contenu d'une  archive et le stocke dans l'archive&nbsp;;
          l'index liste tous les symboles définis par les membres de l'archive qui sont
          des fichiers objet déplaçables</para>
          <indexterm zone="ch-system-binutils ranlib">
            <primary sortas="b-ranlib">ranlib</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="readelf">
        <term><command>readelf</command></term>
        <listitem>
          <para>Affiche des informations sur les binaires du type ELF</para>
          <indexterm zone="ch-system-binutils readelf">
            <primary sortas="b-readelf">readelf</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="size">
        <term><command>size</command></term>
        <listitem>
          <para>Liste les tailles des sections et la taille totale pour les fichiers
          objets donnés</para>
          <indexterm zone="ch-system-binutils size">
            <primary sortas="b-size">size</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="strings">
        <term><command>strings</command></term>
        <listitem>
          <para>Affiche, pour chaque fichier donné, la séquence de caractères affichables
          qui sont d'au moins la taille spécifiée (par défaut, 4)&nbsp;; pour les fichiers
          objets, il affiche, par défaut, seulement les chaînes des sections
          d'initialisation et de chargement alors que pour les autres types de fichiers,
          il parcourt le fichier entier</para>
          <indexterm zone="ch-system-binutils strings">
            <primary sortas="b-strings">strings</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="strip">
        <term><command>strip</command></term>
        <listitem>
          <para>Supprime les symboles des fichiers objets</para>
          <indexterm zone="ch-system-binutils strip">
            <primary sortas="b-strip">strip</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libiberty">
        <term><filename class="libraryfile">libiberty</filename></term>
        <listitem>
          <para>Contient des routines utilisées par différents programmes GNU comme
          <command>getopt</command>, <command>obstack</command>,
          <command>strerror</command>, <command>strtol</command>, et
          <command>strtoul</command></para>
          <indexterm zone="ch-system-binutils libiberty">
            <primary sortas="c-libiberty">libiberty</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libbfd">
        <term><filename class="libraryfile">libbfd</filename></term>
        <listitem>
          <para>Bibliothèque des descripteurs de fichiers binaires
          (<foreignphrase>Binary File Descriptor</foreignphrase>)</para>
          <indexterm zone="ch-system-binutils libbfd">
            <primary sortas="c-libbfd">libbfd</primary>
          </indexterm>
        </listitem>
      </varlistentry>

      <varlistentry id="libopcodes">
        <term><filename class="libraryfile">libopcodes</filename></term>
        <listitem>
          <para>Une bibliothèque de gestion des opcodes&mdash;la <quote>version
          lisible</quote> des instructions du processeur&nbsp;; elle est utilisée pour
          construire des outils comme
          <command>objdump</command>.</para>
          <indexterm zone="ch-system-binutils libopcodes">
            <primary sortas="c-libopcodes">libopcodes</primary>
          </indexterm>
        </listitem>
      </varlistentry>

    </variablelist>

  </sect2>

</sect1>