Compilar y enlazar aplicaciones con makefiles
Cuando se crea una aplicación, usted escribe su código en varios archivos de código fuente. Para una aplicación, puede tener muchos archivos de código fuente diferentes. Algunos grandes proyectos corporativos pueden tener cientos (o miles) de archivos de código fuente con docenas de programadores que trabajan en los diferentes archivos.
Como se puede imaginar, docenas de programadores de carácter fuerte que trabajan juntos hace que para toda una aventura-, pero mediante el uso de herramientas como hacer, estos programadores son capaces de trabajar juntos fácilmente.
Para transformar estos archivos de código fuente en una sola aplicación, es necesario compilar y vincularlos.
Compilación significa la transformación de su código C ++ (o cualquier idioma que está utilizando) a un lenguaje legible por la máquina llamado ensamblador. El lenguaje ensamblador difiere entre los tipos de procesadores. La mayoría de los que lean este libro probablemente están trabajando en una versión de un procesador AMD o Intel, por lo que los compiladores de C ++ que utiliza normalmente traducen sus aplicaciones en código ensamblador (también llamado código de máquina) que es apropiado para el procesador en su sistema.
También puede indicar al compilador para apuntar algún otro procesador en muchos casos. El compilador mete todo este código ensamblador en un archivo llamado archivo de objeto y típicamente nombres de archivo de los mismos que el archivo de código fuente original pero con un .obj o .o extensión. Para cada archivo de código fuente, el compilador hace un solo archivo objeto.
Después de haber recopilado todos sus archivos de código fuente, se corre el enlazador. los enlazador toma los archivos objeto y los combina en un solo archivo que puede ejecutar en su equipo. Este único archivo por lo general recibe un .exe de extensión, lo que significa executable.
El origen de este término proviene de ejecución, que se refiere a la ejecución de una aplicación y probablemente tenía algo que ver con lo que el usuario de la primera aplicación informática que quería hacer al programador después de usar la aplicación.
El enlazador puede producir otros tipos de archivos de salida. Por ejemplo, puede crear un .lib (biblioteca) o .dll (Dynamic Link Library, o DLL). Estos archivos contienen código ejecutable, al igual que el archivo .exe hace, pero no se ejecutan como archivos independientes - un .exe Normalmente archivo que se carga y utiliza el código ejecutable que contienen.
El compilador también se inserta en el objeto presenta una gran cantidad de información además del código ensamblador. Por ejemplo, cuando usted todavía está en el proceso de desarrollo de su aplicación, puede indicar al compilador para mostrar información de depuración en el archivo. (Aunque a veces la información de depuración va en un archivo- separado que depende del compilador.)
Información de depuración incluye los nombres de las variables y los números de línea del código fuente. Cuando se utiliza una herramienta de depuración, esa herramienta sabe de su código al ver la información de depuración.
El compilador también pone información sobre el código, como los nombres de los elementos que se presentan, en otros archivos de código fuente. Por ejemplo, si usted está escribiendo código que llama código en otro archivo de código fuente, el compilador incluye el nombre de ese código en el archivo objeto. De esa manera, el enlazador puede conectar los dos.
Por último, un compilador puede agregar recursos a los archivos de objetos, como gráficos y sonidos que su aplicación requiere. Estos recursos aparecen como datos que la aplicación accede más tarde. Datos aparece en áreas separadas de código ejecutable en el archivo, pero usted no tiene que preocuparse acerca de la organización de archivos objeto - el compilador se encarga de gestionar tanto el código y los datos para usted.