Preguntas y respuestas de la entrevista: Makefile

Makefile

1. Preparación de conocimientos
Antes de comenzar a aprender make, primero debe aclarar algunos conceptos básicos:
** 1) Compilación: ** Convierta el código escrito en un lenguaje de alto nivel en instrucciones de máquina reconocibles por máquina (énfasis) . La máquina puede reconocer las instrucciones generadas después de compilar el lenguaje de alto nivel, pero no pueden ejecutarse.Durante la compilación, el compilador verifica si la sintaxis del lenguaje de alto nivel, las funciones y las variables están declaradas correctamente, solo toda la sintaxis es correcta y las variables relevantes están definidas correctamente. Puede compilar el archivo de destino intermedio. Por lo general, un archivo fuente en un lenguaje de alto nivel puede corresponder a un destino. El archivo de destino predeterminado es ".o" en Linux (por ejemplo, el archivo de destino para "foo.c" es "foo.o").
(Nota: para distinguirlo del archivo de destino de la regla. En el siguiente texto, el archivo de destino generado después de compilar el lenguaje de alto nivel se convertirá en un archivo .0)
** 2) Enlace: ** Habrá más archivos .o, o archivos .o y archivos de biblioteca El enlace se convierte en un programa ejecutable que puede ser ejecutado por el sistema operativo (en el entorno Linux, el formato del archivo ejecutable es el formato "ELF"). El vinculador no comprueba el archivo fuente donde se encuentra la función, solo los símbolos definidos en todos los archivos .o. Combine funciones utilizadas en archivos .o con símbolos relacionados en otros archivos .o o de biblioteca, reorganice (reubique) símbolos en todos los archivos y vincule archivos relacionados con el sistema (archivos de inicio del programa, etc.) para generar finalmente Para ejecutar el programa, el proceso de vinculación utiliza la herramienta "ld" de GNU.
** 3) Biblioteca estática: ** también conocida como archivo de almacenamiento. Es una colección de múltiples archivos .o. El sufijo del archivo de biblioteca estática en Linux es ".a". No hay un formato especial para cada miembro (archivo .o) en la biblioteca estática, es solo una colección de archivos .o. Use la herramienta "ar" para mantener y administrar bibliotecas estáticas.
** 4) Biblioteca compartida: ** también es una colección de múltiples archivos .o, pero el compilador genera estos archivos .o de una manera especial (en Linux, el formato de archivo de la biblioteca compartida suele ser formato "ELF", compartido La biblioteca ya tiene condiciones ejecutables). Las direcciones (referencias variables y llamadas a funciones) de cada miembro en el módulo son direcciones relativas.Cuando se ejecuta un programa que usa esta biblioteca compartida, la biblioteca compartida se carga dinámicamente en la memoria y se vincula con el programa principal en la memoria . Múltiples programas ejecutables pueden compartir el segmento de código del archivo de la biblioteca (múltiples programas pueden compartir un cierto módulo en la biblioteca, compartir código, no compartir datos). Además, se pueden ejecutar objetos miembros de bibliotecas compartidas (compatibles con libdl.so).
Si desea conocer el uso más detallado de ld, consulte la descripción y el uso de ld en info ld.
Estas son las bases de la fundación. Si desea ser un ingeniero integrado de Linux calificado, debe conocer estas bases.

Publicado 53 artículos originales · elogiado 16 · visitas 2213

Supongo que te gusta

Origin blog.csdn.net/m0_37757533/article/details/105169644
Recomendado
Clasificación