<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Introducción</title><meta name="generator" content="DocBook XSL Stylesheets V1.64.0"><link rel="home" href="index.html" title="Guía de Referencia"><link rel="up" href="install-free-software-chapter.html" title="Capítulo 12. Compilando e instalando software libre"><link rel="previous" href="install-free-software-chapter.html" title="Capítulo 12. Compilando e instalando software libre"><link rel="next" href="decompression.html" title="Descompresión"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Introducción</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="install-free-software-chapter.html">Anterior</a> </td><th width="60%" align="center">Capítulo 12. Compilando e instalando software libre</th><td width="20%" align="right"> <a accesskey="n" href="decompression.html">Siguiente</a></td></tr></table><hr></div><div class="sect1" lang="es"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2559019"></a>Introducción</h2></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa3"></a>Lo que hace la diferencia entre el software libre y el software propietario es el acceso al código fuente del software<sup>[<a name="id2559044" href="#ftn.id2559044">32</a>]</sup>. Eso significa que el software libre se distribuye como archivos de ficheros fuente. Esto puede resultar poco familiar a los principiantes, porque los usuarios de software libre deben compilar ellos mismos los fuentes antes de poder usar el software.</p><p><a name="BId-install-free-software-chapter-pa5"></a>Hay versiones compiladas de la mayoría del software libre existente. El usuario apurado no tiene más que instalar estos binarios precompilados. Sin embargo, algún software libre no se distribuye bajo esta forma, o las versiones más recientes todavía no se distribuyen en forma binaria. Más aun, si usa un sistema operativo exótico o una arquitectura exótica, un montón de software no va a estar ya compilado para Usted. Es más, compilar el software uno mismo permite conservar sólo las opciones interesantes o extender las funcionalidades del mismo agregando extensiones para obtener un software que responde perfectamente a sus necesidades.</p><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="id2559100"></a>Requisitos</h3></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa6"></a>Para compilar software, necesitará:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-install-free-software-chapter-pa7"></a>una computadora con un sistema operativo funcionando;</p></li><li><p><a name="BId-install-free-software-chapter-pa8"></a>conocimiento general del sistema operativo que Usted usa;</p></li><li><p><a name="BId-install-free-software-chapter-pa9"></a>algo de espacio en su disco rígido;</p></li><li><p><a name="BId-install-free-software-chapter-pa10"></a>un compilador (generalmente para el lenguaje <tt class="systemitem">C</tt>) y un archivador (<span><b class="command">tar</b></span>);</p></li><li><p><a name="BId-install-free-software-chapter-pa11"></a>algo de comer (en los casos difíciles, puede durar un tiempo largo) Un verdadero hacker come pizza, no tornillos;</p></li><li><p><a name="BId-install-free-software-chapter-pa12"></a>algo de beber (por las mismas razones) Un verdadero hacker bebe cola con gas – por la cafeína;</p></li><li><p><a name="BId-install-free-software-chapter-pa13"></a>el número de teléfono de su “<span class="quote">gurú</span>” tecnológico, ese que recompila el núcleo todas las semanas;</p></li><li><p><a name="BId-install-free-software-chapter-pa14"></a>pero por sobre todo, paciencia, ¡y mucha!</p></li></ul></div><p><a name="BId-install-free-software-chapter-pa15"></a>Compilar desde el código fuente generalmente no presenta muchos problemas, pero si Usted no está acostumbrado, el menor tropiezo lo puede poner en una posición dificultosa o puede hacer que desista. El propósito de este documento es precisamente mostrarle como escapar de tal situación.</p></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="id2559269"></a>Compilación</h3></div></div><div></div></div><div class="sect3" lang="es"><div class="titlepage"><div><div><h4 class="title"><a name="id2559281"></a>Los principios</h4></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa16"></a>Para poder traducir un código fuente a un fichero binario, es necesario efectuar una <a name="BId-install-free-software-chapter-gt1" href="glossary.html#term-compilation"><i class="glossterm">compilación</i></a>. Esta se hace generalmente sobre programas escritos en lenguaje <tt class="systemitem">C</tt> o <tt class="systemitem">C++</tt> (que son los lenguajes más usados en la comunidad de software libre, notablemente en el mundo <span class="application">UNIX</span>) Ciertos software libres están escritos en lenguajes que no necesitan compilación (por ejemplo <span class="application">perl</span> o el shell), pero aún así, estos necesitan algo de configuración.</p><p><a name="BId-install-free-software-chapter-pa17"></a>Lógicamente, la compilación <tt class="systemitem">C</tt> está hecha por un compilador <tt class="systemitem">C</tt> que por lo general es <span><b class="command">gcc</b></span>, el compilador libre escrito por el <a href="http://www.gnu.org/" target="_top">proyecto <span class="acronym">GNU</span></a>. La compilación de todo un paquete de software es una tarea compleja, que pasa por la compilación satisfactoria de ficheros fuente diferentes (para el programador es más fácil poner las diferentes partes de su trabajo en ficheros separados, por varios motivos) Para hacer más fácil esta tarea, estas operaciones repetitivas son efectuadas por un utilitario denominado <span><b class="command">make</b></span>.</p></div><div class="sect3" lang="es"><div class="titlepage"><div><div><h4 class="title"><a name="steps"></a>Las cuatro fases de la compilación</h4></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa18"></a>Para comprender como funciona la compilación (para poder resolver posibles problemas), uno tiene que conocer las fases involucradas. El objetivo es convertir poco a poco un texto escrito en un lenguaje comprensible por un ser humano entrenado (por ejemplo, el lenguaje <tt class="systemitem">C</tt>), a un lenguaje comprensible por una máquina (o por un ser humano <span class="emphasis"><em>muy</em></span> entrenado, aunque sólo en casos raros). <span><b class="command">gcc</b></span> ejecuta cuatro programas uno tras otro, cada uno de los cuales se encarga de una etapa:</p><div class="orderedlist"><ol type="1"><li><p><a name="BId-install-free-software-chapter-pa19"></a><span><b class="command">cpp</b></span>: la primera etapa consiste en reemplazar las directivas (<a name="BId-install-free-software-chapter-gt2" href="glossary.html#term-preprocessors"><i class="glossterm">preprocesadores</i></a>) por instrucciones <tt class="systemitem">C</tt> puras. Típicamente, esto significa insertar un fichero de encabezado o <span class="foreignphrase"><i class="foreignphrase">header</i></span> (<tt class="literal">#include</tt>), o definir una función macro (<tt class="literal">#define</tt>) Al final de esta fase, se genera código <tt class="systemitem">C</tt> puro.</p></li><li><p><a name="BId-install-free-software-chapter-pa20"></a><span><b class="command">cc1</b></span>: esta fase consiste en convertir el <tt class="systemitem">C</tt> en <a name="BId-install-free-software-chapter-gt3" href="glossary.html#term-assembly-language"><i class="glossterm">lenguaje ensamblador</i></a>. El código generado depende de la arquitectura de destino.</p></li><li><p><a name="BId-install-free-software-chapter-pa21"></a><span><b class="command">as</b></span>: esta fase consiste en generar el <a name="BId-install-free-software-chapter-gt4" href="glossary.html#term-object-code"><i class="glossterm">código objeto</i></a> (o código <a name="BId-install-free-software-chapter-gt5" href="glossary.html#term-binary"><i class="glossterm">binario</i></a>) a partir del lenguaje ensamblador. Al final de esta fase, se generará un fichero con extensión <tt class="filename">.o</tt>.</p></li><li><p><a name="BId-install-free-software-chapter-pa22"></a><span><b class="command">ld</b></span>: la última fase (la “<span class="quote">edición de vínculos</span>”, en inglés <span class="foreignphrase"><i class="foreignphrase">linkage</i></span>) ensambla (o <a name="BId-install-free-software-chapter-gt6" href="glossary.html#term-linkage"><i class="glossterm">vincula</i></a>) todos los ficheros objeto (<tt class="filename">.o</tt>) y las bibliotecas asociadas, y produce un fichero ejecutable.</p></li></ol></div></div></div><div class="sect2" lang="es"><div class="titlepage"><div><div><h3 class="title"><a name="id2559675"></a>La estructura de una distribución</h3></div></div><div></div></div><p><a name="BId-install-free-software-chapter-pa23"></a>Una distribución de software libre correctamente estructurado siempre tiene la misma organización:</p><div class="itemizedlist"><ul type="disc"><li><p><a name="BId-install-free-software-chapter-pa24"></a>Un fichero denominado <tt class="filename">INSTALL</tt>, que describe el proceso de instalación.</p></li><li><p><a name="BId-install-free-software-chapter-pa25"></a>Un fichero denominado <tt class="filename">README</tt>, que contiene información general relacionada con el programa (descripción breve, autor, la <span class="acronym">URL</span> desde donde se puede bajar, documentación relacionada, vínculos útiles, etc) Si falta el fichero <tt class="filename">INSTALL</tt>, generalmente el fichero <tt class="filename">README</tt> contiene una descripción breve del procedimiento de instalación.</p></li><li><p><a name="BId-install-free-software-chapter-pa26"></a>Un fichero denominado <tt class="filename">COPYING</tt>, que contiene la licencia o describe las condiciones de distribución del software. A veces lo reemplaza un fichero denominado <tt class="filename">LICENSE</tt>, con el mismo contenido.</p></li><li><p><a name="BId-install-free-software-chapter-pa27"></a>Un fichero denominado <tt class="filename">CONTRIB</tt> o <tt class="filename">CREDITS</tt> que contiene una lista de las personas relacionadas con el software (participación activa, comentarios pertinentes, programas de terceros, etc.)</p></li><li><p><a name="BId-install-free-software-chapter-pa28"></a>Un fichero denominado <tt class="filename">CHANGES</tt> (o, con menor frecuencia, <tt class="filename">NEWS</tt>, que contiene las mejoras y las correcciones de los <span class="foreignphrase"><i class="foreignphrase">bugs</i></span> (errores en el software).</p></li><li><p><a name="BId-install-free-software-chapter-pa29"></a>Un fichero denominado <tt class="filename">Makefile</tt><a class="indexterm" name="BId-install-free-software-chapter-it1"></a> (consulte la sección <a href="install-free-compilation.html#make" title="Make">“Make”</a>), que permite compilar el software (es un fichero que necesita <span><b class="command">make</b></span>). Generalmente este fichero no existe al principio y se genera durante el proceso de configuración.</p></li><li><p><a name="BId-install-free-software-chapter-pa30"></a>Bastante seguido, un fichero <tt class="filename">configure</tt> o <tt class="filename">Imakefile</tt>, que permitirá generar un fichero <tt class="filename">Makefile</tt> nuevo personalizado para un sistema en particular (consulte <a href="install-free-config.html" title="Configuración">“Configuración”</a>).</p></li><li><p><a name="BId-install-free-software-chapter-pa31"></a>Un directorio que contendrá los fuentes, y donde generalmente se almacena el fichero binario al final de la compilación. Por lo general, este directorio se denomina <tt class="filename">src</tt>.</p></li><li><p><a name="BId-install-free-software-chapter-pa32"></a>Un directorio que contiene la documentación relacionada con el programa (generalmente en formato <span><b class="command">man</b></span> o en formato <tt class="systemitem">Texinfo</tt>), cuyo nombre es, por lo general, <tt class="filename">doc</tt>.</p></li><li><p><a name="BId-install-free-software-chapter-pa33"></a>Eventualmente, un directorio que contiene los datos propios del programa (típicamente, los ficheros de configuración, los ejemplos de los datos producidos, o ficheros de recursos)</p></li></ul></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2559044" href="#id2559044">32</a>] </sup>Esto no es completamente cierto ya que ya que algunos software propietarios también ofrecen su código fuente. Pero, a diferencia de lo que ocurre con el software libre, el usuario final no puede usar o modificar el código fuente de la manera que él desee.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="install-free-software-chapter.html">Anterior</a> </td><td width="20%" align="center"><a accesskey="u" href="install-free-software-chapter.html">Subir</a></td><td width="40%" align="right"> <a accesskey="n" href="decompression.html">Siguiente</a></td></tr><tr><td width="40%" align="left" valign="top">Capítulo 12. Compilando e instalando software libre </td><td width="20%" align="center"><a accesskey="h" href="index.html">Inicio</a></td><td width="40%" align="right" valign="top"> Descompresión</td></tr></table></div></body></html>