Bibliotecas Nacen a partir de la necesidad de la compilación por módulos. Lo cual consiste en separar el programa principal de aquellas funciones que se.

Slides:



Advertisements
Presentaciones similares
UNIX COMP 240.
Advertisements

SIR – Sistema de indicadores Regionales Capacitación Carátula.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Perfil Agente de Aduana
Temas Operaciones básicas Instalando el compilador
Fundamentos de la Programación Estructurada
Programación, Algoritmos y Estructuras de Datos
Funciones. Programación, Algoritmos y Estructuras de Datos.
Una variable en un programa es algo con un nombre, cuyo valor puede variar. La manera en que el compilador y enlazador maneja esto es asignando un bloque.
Historia La base del C proviene del BCPL (lógica programable en codigo binario), escrito por Martin Richards, y del B escrito por Ken Thompson en 1970.
SISTEMA DE NACIMIENTOS MANUAL DEL USUARIO. El objetivo del presente manual es servir de guía al usuario final para interactuar con el Sistema, permitiéndole.
FUNCIONES EN C.
INFORMATICA I Arreglos 1 CLASE 17.
Detalles del sistema operativo
Teoría de lenguajes y compiladores
Introducción al lenguaje C++
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Unidad 3 Punteros.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Funciones en lenguaje C
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Tema 6: Clases Antonio J. Sierra.
Programación de código reubicable
Elemento Lógico (Software)
TRADUCTOR DE UN PROGRAMA
Igor Santos Grueiro. Ahora tenemos datos y datos …
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
Semana 5 Subprogramas..
Archivos.
Introducción a la Programación. Lenguaje de Máquina.
Informática Ingeniería en Electrónica y Automática Industrial
Programación de Memoria Compartida
Clase 10: Estructuras de datos y arreglos.
Valor X Valor Y Punto (0,0) Coordenadas.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Archivos Programación I MC Beatriz Beltrán Martínez.
Ingeniería en Sistemas de Información Diseño de Sistemas (3K1)
Unidad II Introducción a la programación en C++
Introducción Lenguaje de Programación ING2101 SECC Ayud. Ariel Fierro Sáez.
APLICACIÓN EN VISUAL BASIC
Elementos básicos del lenguaje
NOMBRES:OLIVARES ALFARO JOSE L. BONETTI ARON GRUPO:308.
APUNTADORES.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
V. INSTALACION DE SOFTWARE.
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
Sistemas Operativos I Un sistema operativo es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas.
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
SOFTWARE Jennifer Giselle De Diego Romero NL:9
PRINCIPIOS DE PROGRAMACIÓN
LENGUAJE “C” Programación.
2008 Escuela de Informática y Telecomunicaciones, DuocUC Escuela de Informática y Telecomunicaciones Clase 9: Funciones, variables y arreglos en BASH Nombre.
Las variables de entorno forman un conjunto de valores dinámicos que normalmente afectan el comportamiento de los procesos en una computadora.
UNIDAD V Bibliotecas de Funciones L.I. & M.S.C. OSCAR RAMÍREZ CORTÉS PROGRAMACIÓN DE SISTEMAS.
Software.
Utilizar Costo Promedio Ponderado en el Software Administrativo SAW
Que es make? Make es un comando que se utiliza para la creació n de archivos ejecutables o programas, su instalación y la limpieza de archivos temporales.
Software.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Proceso de desarrollo de Software
Funciones Copyright © 2005 Unidad 1. Copyright © 2005 Objetivos del Aprendizaje Explicar la naturaleza y usos de las funciones. Describir algunas funciones.
MEMORIA DINÁMICA.
Especificación del Problema Partimos del hecho de un programador no puede resolver un problema que no entiende. Por esta razón, la primera etapa en todo.
El Sistema Operativo es el software básico necesario para el funcionamiento de cualquier ordenador Los Sistemas Operativos están en continua evolución.
JOSE ALBERTO JIMENEZ JIMENEZ KATTY HIPOLITO. 7.1 INTRODUCCION AL LENGUAJE EMSAMBLADOR.
Curso de programación Visual Chart 6 (1ªEd.)
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
P ROCESO DE E NSAMBLADO Cámara Vázquez Berenice Rubí.
Katty Evangelina Hipólito Chi.   Aunque cada maquina tiene un lenguaje ensamblador distinto, el proceso de ensamblador tiene suficiente similitudes.
Transcripción de la presentación:

Bibliotecas Nacen a partir de la necesidad de la compilación por módulos. Lo cual consiste en separar el programa principal de aquellas funciones que se utilizan frecuentemente en distintos programas. Con ello es posible desarrollar programas que utilizan aquellas funciones sin el esfuerzo adicional que provoca el incluir su código fuente una y otra vez. Una biblioteca es un archivo que contiene las funciones que un programa necesita. El formato de una biblioteca es comprendido por el linker. El linker selecciona sólo aquellas funciones que el programa necesita y excluye todas las demás.

La ejecución de un programa es desarrollada por una pieza de software que es esencial para el sistema operativo, en el caso de Linux es la llamada exec( ). exec( ) tiene como tareas: encontrar el archivo. asignar memoria al proceso. cargar partes del archivo relacionadas con el código y valores iniciales de las variables. transferir el control a la CPU hacia un punto en el código del proceso que es indicado en el ejecutable. Bibliotecas

Tipos de bibliotecas existen las bibliotecas estáticas y compartidas Generalmente se ubican en /usr/lib, si no es necesario modificar la variable de entorno LD_LIBRARY_PATH Estáticas corresponde a una colección de código objeto almacenada en un archivo cuyo nombre termina en.a En el proceso de linkeo se buscan los módulos que el programa necesita y se incluyen en la generación del programa ejecutable. En el caso de Linux el linker es ld, no es invocado directamente por los usuarios sino que mediante gcc.

Bibliotecas Para crear una biblioteca estática: Se compilan y genera el código objeto para todos los archivos que se desean incluir. gcc -c util.c util1.c util2.c Luego se genera la biblioteca con el comando ar ar rc libutil.a util.o util1.o util2.o Finalmente se “indexa” la biblioteca ranlib libutil.a Si un programa utiliza algunas funciones de la biblioteca, las incluye en su programa fuente y luego en el proceso de compilación se debe hacer una referencia explicita a la biblioteca que las contiene: gcc programa.c –o programa –L. -lutil

Bibliotecas Compartidas una biblioteca compartida es linkeada en un programa en 2 pasos. Primero, durante la fase de compilación el linker verifica que todos los símbolos requeridos por el programa (funciones, variables, etc) se encuentran en él o bien en una biblioteca compartida. Sin embargo el código objeto (de la biblioteca) no se incluye en la generación del programa ejecutable. Posteriormente, durante la ejecución del programa se realiza el linkeo mediante un programa especial (/lib/ld-linux.so ó /lib/ld.so) Una biblioteca compartida se carga completamente en memoria. Si se ejecuta un segundo programa linkeado a la misma biblioteca, se utiliza la ya existente en memoria. Con esto los programas ejecutables son mas pequeños y además se reduce la utilización de memoria durante su ejecución.

Bibliotecas Para crear una biblioteca compartida: gcc –c util.c –fPIC La opcion fPIC se utiliza para indicar que la dirección de memoria en donde se carga la biblioteca es independiente del programa que la carga. gcc –shared –olibutil.so util.o con esto se crea la biblioteca util como compartida. Luego, cuando un programa necesita de las funciones presentes en la biblioteca se debe compilar de la sgte manera: gcc programa.c –L. –lutil Se utiliza –L. para indicar que la biblioteca se encuentra en el directorio actual, ya que por defecto se ubican en /usr/lib/

Bibliotecas Para localizar una biblioteca fuera de /usr/lib/ se debe modificar la variable de entorno LD_LIBRARY_PATH. $ LD_LIBRARY_PATH=$HOME/sources/lib/ $ export LD_LIBRARY_PATH Para verificar que un programa no tendra problemas en la carga de la biblioteca compartida se puede usar $ ldd nombre_programa

Bibliotecas En algunos casos se utiliza de manera idéntica los términos compartida y dinámica. En este caso el dinamismo se refiere al proceso de linkeo que se realiza en tiempo de ejecución. Otra cosa muy distinta es utilizar una biblioteca compartida en forma dinámica. En este caso se carga la biblioteca, se utilizan algunas funciones y cuando ya no se necesitan se “borra” de la memoria. Un caso en el cual se justifica puede ser el siguiente: Supongamos el caso en el cual un programa debe estar preparado para leer archivos creados en diferentes formatos. Por ejemplo xv, no es muy frecuente visualizar decenas de imágenes de distintos formatos al mismo tiempo. Lo mejor sería escribir una biblioteca para cada formato de imagen y cargarla cuando sea necesario. Luego que una imagen ya no desea ser visualizada la biblioteca se “borra” de la memoria.

Bibliotecas #include int main(int argc, char **argv) { void *handle; double (*cosine)(double); char *error; handle = dlopen ("libm.so", RTLD_LAZY); if (!handle) { fprintf (stderr, "%s\n", dlerror()); exit(1); } cosine = dlsym(handle, "cos"); if ((error = dlerror()) != NULL) { fprintf (stderr, "%s\n", error); exit(1); } printf ("%f\n", (*cosine)(2.0)); dlclose(handle); return 0; }

make Es un programa que diseñado para determinar automáticamente cuales piezas de un software necesitan ser recompiladas. Generalmente un archivo llamado makefile contiene las dependencias entre las piezas del software y los comandos para la actualización. Es posible usar make con cualquier lenguaje de programación cuyo compilador pueda ser ejecutado desde un shell. Una version popular corresponde a GNU make.

make En el proceso de compilación existen 3 etapas: Luego de tomar el codigo fuente y llevarlo a un lenguaje de bajo nivel (.s) se genera un código objeto (.o), el cual es posteriormente enlazado con algunas bibliotecas que contienen funciones (por ej: printf)

make Tambien existe la posibilidad de generar un programa ejecutable a partir de varios archivos fuente.

make En el caso anterior la compilación no es separada, en este caso la creación del programa ejecutable se realiza mediante compilación independiente. Ahora las piezas resultantes (.o) se fusionan mediante el linkeo.

make Un concepto clave en make es la dependencia. Por ejemplo, para crear main.o se depende de data.h, main.c e io.h

make La habilidad de make está en evitar un proceso completo de compilación cuando solo una pieza del software ha cambiado. En este caso para una modificación en io.c resulta razonable $ cc –c io.c $ cc –oproject1 data.o main.o io.o

make El grafo de dependencias existente para la creación de un programa se especifica en un archivo llamado makefile En un makefile se incluyen los comandos necesarios para la compilación y el linkeo.

make La estructura de un makefile se compone básicamente de: target: archivo(s) fuente comando para la compilación La línea asociada al comando debe ir precedida de un tab.

make También es posible definir macros: OBJECTS = data.o main.o io.o Luego, para hacer referencia al contenido de la macro se utiliza $(OBJECTS) Una macro es útil los flags de compilación. FLAGS= -g -DDEBUG Es importante destacar que make puede ejecutar cualquier comando que se ejecute desde un shell. Asi es posible tener algo como: clean: rm *.o