Una compilación de software es el proceso de convertir archivos de código fuente en artefactos de software independientes que se pueden ejecutar en una computadora, o el resultado de hacerlo. [ 1 ] Incluye funciones como control de versiones, análisis de calidad de código, compilación y enlace.
En la producción de software, las compilaciones optimizan el software para el rendimiento y la distribución, empaquetándolo en formatos como ' .exe'; '.deb'; '.apk' . [ 2 ] [ 3 ]
El proceso de compilación suele emplear herramientas especializadas como CMake , Make o Gradle , y se integra con sistemas de automatización como Jenkins o GitHub Actions . A pesar de los avances, persisten problemas como conflictos de dependencias, compatibilidad de plataformas y largos tiempos de compilación. [ 4 ] [ 5 ] [ 6 ]
Funciones
En el desarrollo de software , la creación de software es un proceso integral que involucra muchas funciones distintas. Algunas de estas funciones se describen a continuación.
Control de versiones
La función de control de versiones realiza actividades como la creación y actualización de espacios de trabajo, la definición de líneas base y la generación de informes. Crea un entorno para que se ejecute el proceso de compilación y captura metadatos sobre las entradas y salidas de dicho proceso para garantizar la repetibilidad y la fiabilidad.
Herramientas como Git , AccuRev o StarTeam ayudan con estas tareas al ofrecer herramientas para etiquetar puntos específicos de la historia como importantes, y mucho más.
Calidad del código
También conocida como análisis estático de programas/análisis estático de código, esta función se encarga de comprobar que los desarrolladores se han adherido a los siete ejes de la calidad del código: comentarios, pruebas unitarias, duplicación, complejidad, reglas de codificación, posibles errores y arquitectura y diseño. [ 7 ]
Garantizar que un proyecto tenga código de alta calidad reduce la cantidad de errores e influye en requisitos no funcionales como la mantenibilidad, la extensibilidad y la legibilidad; lo cual tiene un impacto directo en el retorno de la inversión (ROI) de una empresa. [ 8 ]
Compilación
Esta es solo una pequeña parte de la gestión del proceso de compilación. La función de compilación convierte los archivos fuente en objetos intermedios o directamente ejecutables. No todos los proyectos requerirán esta función.
Mientras que en los programas sencillos el proceso consiste en la compilación de un único archivo , en el software complejo el código fuente puede constar de muchos archivos y combinarse de diferentes maneras para producir muchas versiones distintas.
Enlace

Un enlazador o editor de enlaces es un programa informático que combina archivos intermedios de compilación de software, como archivos objeto y de biblioteca , en un único archivo ejecutable , como un programa o una biblioteca. Un enlazador suele formar parte de una cadena de herramientas que incluye un compilador y/o un ensamblador que genera archivos intermedios que el enlazador procesa. El enlazador puede estar integrado con otras herramientas de la cadena de herramientas, de modo que el usuario no interactúa directamente con él.
Una versión más simple que escribe su salida directamente en la memoria se llama cargador , aunque la carga generalmente se considera un proceso separado. [ 9 ] [ 10 ]
Herramientas de construcción
El proceso de compilación de un programa informático suele gestionarse mediante una herramienta de compilación , un programa que coordina y controla otros programas. Ejemplos de este tipo de programas son make , Gradle , Ant , Maven , Rake , SCons y Phing. La utilidad de compilación normalmente necesita compilar los distintos archivos en el orden correcto. Si el código fuente de un archivo en particular no ha cambiado, es posible que no necesite recompilarse ( se utiliza el pronombre «puede que no» en lugar de «no necesita», ya que puede depender de otros archivos que sí han cambiado). Las utilidades de compilación y los enlazadores más sofisticados intentan evitar recompilar el código que no lo necesita, para acortar el tiempo necesario para completar la compilación. Un proceso más complejo puede implicar que otros programas generen código o datos como parte del proceso de compilación y del software.

Véase también
Referencias
- ↑ "¿Qué es Build?" . Techopedia . 6 de septiembre de 2011 . Consultado el 4 de abril de 2020 .
- ↑ Byfield, Bruce. "Formatos de paquetes universales y sus diferencias » Linux Magazine" . Linux Magazine . Consultado el 6 de diciembre de 2024 .
- ↑ "¿Qué es un paquete de software?" . GeeksforGeeks . 26-02-2024 . Consultado el 06-12-2024 .
- ↑ "Una guía completa del proceso de desarrollo de software - Net Group" . netgroup.com . 14 de febrero de 2022. Consultado el 6 de diciembre de 2024 .
- ↑ "Proceso de compilación de software (Guía completa)" . devopsbuzz.com . 10/10/2015 . Consultado el 06/12/2024 .
- ↑ "¿Qué es el proceso de creación de software? Una guía completa en 2024 - Hapy Co" . 19 de febrero de 2024. Consultado el 6 de diciembre de 2024 .
- ↑ "Software SonarQube™" . Consultado el 4 de enero de 2014 .
- ↑ Muschko, Benjamin (9 de marzo de 2014). Gradle en acción . Manning Pubns Co. ISBN 9781617291302.
- ↑ Editor y cargador de enlaces del sistema operativo de IBM (PDF) . IBM Corporation . 1972. Archivado (PDF) del original el 6 de marzo de 2020. Consultado el 7 de marzo de 2020 .
- ↑ Barron, David William (1978) [1971, 1969]. "5.7. Editores y consolidadores de enlaces". Escrito en la Universidad de Southampton , Southampton, Reino Unido. En Floretin, J. John (ed.). Ensambladores y cargadores . Monografías informáticas (3.ª ed.). Nueva York, EE. UU.: Elsevier North-Holland Inc. págs. 65–66 . ISBN 0-444-19462-2. LCCN 78-19961 .
- Desarrollo de software
- Programación informática