Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Librerías en Linux Ubuntu, Diapositivas de Programación del Sistema

Aprenderá sobre la creación de librerías estáticas y dinámicas en Linux Ubuntu

Tipo: Diapositivas

2020/2021

Subido el 14/07/2021

joshua-villegas
joshua-villegas 🇪🇨

5

(1)

3 documentos

1 / 19

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
LIBRERÍAS
COMPARTIDAS
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13

Vista previa parcial del texto

¡Descarga Librerías en Linux Ubuntu y más Diapositivas en PDF de Programación del Sistema solo en Docsity!

LIBRERÍAS

COMPARTIDAS

Liberías Compartidas

Resolución de Símbolos

  1. Resolver símbolos locales es fácil
  2. Para símbolos globales, se asume están en otro modulo ¿Y sí símbolo está definido muchas veces?

Liberías Compartidas

Reglas del Linker:

  1. No se permiten múltiples símbolos fuertes iguales
  2. Entre símbolo débil y uno fuerte, se elige el fuerte
  3. Entre varios símbolos débiles, se elije cualquiera de ellos.

Linking Estático Mecanismo para “empacar” archivos objeto re-ubicables en un solo ejecutable. ¿Mecanismos?

■ Para crear librería .a desde varios .c: **gcc – c .c ar rcs nombre.a .o Para hacer linking con dicha librería: **gcc .o .a – o nombre

Ejecutando archivo objeto reubicables

Para ejecutarlos: ./programa El programa se empieza a ejecutar gracias al loader Loader: Copia el código y datos del archivo objeto ejecutable a la memoria, y salta al entry point (la primera instrucción).

■ Cuando loader se ejecuta:

  1. Copia segmentos de datos y código a memoria
  2. Loader salta al entry point ( dirección _start )
  3. El código de inicio es igual para todo programa de C

Linking dinámico Liberías compartidas pueden ser cargadas al momento de ejecutar el programa en cualquier dirección de memoria, y enlazada con un programa en memoria.

Se comparten de dos maneras:

  1. Todos los programas usan el mismo archivo .so
  2. Solo una instancia de la sección de texto se carga en memoria. Para generar .so usamos banderas: - shared y - fPIC

*int dlclose (void handle); → Desacarga la librería *int dlclose (void handle); → Nos devuelve errores generados por dlsym o dlopen **void *dlsym(void handle, char symbol); → Nos devuelve la dirección del simbolo symbol.