3.3 Traducción de un programa: Compilación, enlace de un programa, errores en tiempo de compilación.
3.3 Traducción de un programa: Compilación, enlace de un programa,
errores en tiempo de compilación.
Para la elaboración de un
programa hay que distinguir entre las siguientes dos fases:
− Fase de compilación y montado o enlace (link,)
− Fase de ejecución de un
programa.
Fase de compilación y
linkado (link, montado o enlace)
Un programa
escrito en un lenguaje de alto nivel, no puede ser ejecutado directamente por un ordenador, sino
que debe ser traducido a lenguaje máquina.
Las etapas por las
que debe pasar un programa escrito en un lenguaje de programación, hasta poder
ser ejecutable son:
Programa fuente: Programa escrito
en un lenguaje de alto nivel (texto ordinario que contiene las sentencias del
programa en un lenguaje de programación). Necesita ser traducido a código
máquina para poder ser ejecutado.
Compilador: Programa encargado
de traducir los programas fuentes escritos en un lenguaje de alto nivel a lenguaje
máquina y de comprobar que las llamadas a las funciones de librería se realizan
correctamente.
Programa (o código) objeto: Es el programa
fuente traducido (por el compilador) a código máquina. Aún no es directamente
ejecutable.
Programa
Ejecutable: Traducción completa
a código máquina, realizada por el enlazador, del programa fuente y que ya es
directamente ejecutable.
Montador o
enlazador (Linker ): Es el programa encargado de
insertar al programa objeto el código máquina de las funciones de las librerías
(archivos de biblioteca) usadas en el programa y realizar el proceso de montaje,
que producirá un programa ejecutable .exe. Las librerías son una colección de código
(funciones) ya programado y traducido a código máquina, listo para utilizar en
un programa y que facilita la labor del programador.
Errores en
tiempo de compilación
Si el programa fuente es
sintácticamente correcto, el compilador generará el código objeto, en caso
contrario mostrará una lista con los errores encontrados, no generándose ningún
programa objeto, para que procedamos a su depuración.
Los compiladores emiten
mensajes de error o de advertencia durante las fases de compilación, de enlace
o de ejecución de un programa:
• Los errores en tiempo de
compilación son los que se producen antes de la ejecución del programa, durante
el proceso de compilación del programa.
Los errores
que se pueden producir en la fase de compilación son:
− Errores fatales: Son raros. Indican errores
internos del compilador. Cuando ocurre la compilación se detiene
inmediatamente.
− Errores de sintaxis: Son los errores típicos de
sintaxis. No detienen la compilación sino que al finalizar ésta se mostrará la
lista con todos los errores encontrados. Algunos errores suelen ser
consecuencia de otros cometidos con anterioridad. Con este tipo de errores no
se puede obtener un programa objeto y por lo tanto tampoco el ejecutable.
− Advertencias o avisos
(warnings): Indican que hay líneas de código sospechosas que a pesar de no infringir
ninguna regla sintáctica, el compilador las encuentra susceptibles de provocar
un error. Cuando se detecta un warning la compilación no se detiene. Si en un
programa fuente sólo se detectan warnings, se podrá obtener un programa objeto, que tras
el linkado dará lugar a un programa ejecutable.
No comments