PRÁCTICA BIBLIOTECAS PROGRAMACIÓN DE SISTEMAS

Anuncio
PRÁCTICA BIBLIOTECAS
PROGRAMACIÓN DE SISTEMAS
Archivo: funciones.c
#include<stdio.h>
float suma(float a, float b){
return a+b;
}
float resta(float a, float b){
return a-b;
}
Archivo: libfunciones.h
#ifndef _LIBFUNCIONES_H
#define _LIBFUNCIONES_H
extern float suma (float a, float b);
extern float resta (float a, float b);
#endif
Archivo: principal.c
#include"libfunciones.h"
#include<stdio.h>
float a, b;
int main(){
printf("\n Introduzca un número ");
scanf("%f",&a);
printf("\n Introduzca otro número ");
scanf("%f",&b);
printf("\n la suma es %f", suma(a,b));
printf("\n la resta es %f", resta(a,b));
}
1. Con los archivos anteriores, ejecuta los pasos necesarios para crear la biblioteca estática y
la biblioteca compartida (dinámica).
2. Deberás generar el archivo funciones.o, libfunciones.a, libfunciones.so y el ejecutable que
haga uso de la biblioteca dinámica y otro para la biblioteca estática.
Pasos para crear la biblioteca estática:
1. gcc -static -c funciones.c -o funciones.o //se crea el archivo objeto de funciones
2. ar -rsc libfunciones.a funciones.o //se crea la biblioteca con el archivo objeto funciones
3. gcc principal.c -L. -lfunciones
<o puedes ejecutar el siguiente comando>
gcc -o ejecutable principal.c -L. -lfunciones // se compila y se crea el ejecutable
Contesta las siguientes preguntas:







¿Cuál es la utilidad de la herramienta ar?
¿Qué indican los parámetros -rsc?
¿Qué hace el parámetro -L.?
¿Qué hace el parámetro -lfunciones?
¿Por qué si mi biblioteca se llama libfunciones sólo debo escribir -lfunciones?
¿Si ejecutas el comando: objdump funciones.o -S qué sucede?
¿Qué sucede si ejecutas el comando: nm libfunciones.a, qué información arroja y para qué
te puede servir?
NOTA: Pueden usar el comando man <comando> para revisar el manual/ayuda del cualquier
comando de Linux.
BIBLIOTECAS DINÁMICAS
1. COMPILAR LA BIBLIOTECA FUNCIONES
gcc -c funciones.c
2.GENERAR LA BIBLIOTECA DINÁMICA
ld -o libfunciones.so funciones.o -shared
3.COMPILAR EL PROGRAMA PRINCIPAL USANDO LA BIBLIOTECA DINÁMICA (modificar el programa
principal para que incluya la biblioteca dinámica, no estática)
gcc -o principal principal.c -I. -L. -Bdynamic -lfunciones
4.intentar ejecutar ./principal
export LD_LIBRARY_PATH=.
intentar ejecutar ./principal
Agregar al PATH la rutas en donde se encuentran bibliotecas dinámicas, en este caso es la actual,
por defecto las busca en usr/lib
NOTAS:
-I indica la ruta del archivo de cabecera
-L indica la ruta del archivo de funciones (la ruta actual)
-Bdynamic para que busque la biblioteca .so en lugar de la .a
si existen las dos: se toma por defecto .a
si existe una: se toma esa
si no existe ninguna: error
Descargar