Академический Документы
Профессиональный Документы
Культура Документы
Sitemas Operativos
Docente:
Ing. Luis Alonso Barrera
Integrantes:
Trigueros Jerez, Erick Adiel
Velasquez Pleitez, Gustavo Adolfo
Fecha de entrega:
Miercoles 23 de agosto de 2017
TAREAS PARTE I. Programacin en Lenguaje C
Herramientas a utilizar
1.1 Compilador gcc:
Verifique si tiene instalado gcc (si No lo tiene instlelo):
En la terminal ejecutamos dpkg -l | grep binutils y vemos si est instalada. (Si), si es asi
aparecera la informacion de gcc, si no procedemos a instalarlo con apt-get install gcc
Que versin de gcc tiene instalada:
En la terminal ejecutamos gcc -v
Version: gcc version 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
Describa las diferentes fases de compilacin en C:
Se parte del Cdigo Fuente C original (fuente.c)
Preprocesador: En esta etapa se interpretan las directivas al preprocesador. Entre
otras cosas, las variables inicializadas con #define son sustituidas en el cdigo por su
valor en todos los lugares donde aparece su nombre.
Compilador: La compilacin transforma el cdigo C en el lenguaje ensamblador
propio del procesador de nuestra mquina.
Ensamblador: El ensamblado transforma el programa escrito en lenguaje
ensamblador a cdigo objeto, un archivo binario en lenguaje de mquina ejecutable
por el procesador.
Enlazador: Las funciones de C/C++ incluidas en nuestro cdigo, tal como printf() en
el ejemplo, se encuentran ya compiladas y ensambladas en bibliotecas existentes en
el sistema. Es preciso incorporar de algn modo el cdigo binario de estas funciones
a nuestro ejecutable. En esto consiste la etapa de enlace, donde se renen uno o ms
mdulos en cdigo objeto con el cdigo existente en las bibliotecas.
Se obtiene el Cdigo ejecutable (a.out)
Defina la utilidad de los siguientes parmetros para el comando gcc:
-c: Realiza pre procesamiento y compilacin, obteniendo el archivo en cdigo objeto; no
realiza el enlazado.
-S: Detiene despus de la etapa de compilacin propiamente dicha; No ensambla. La salida
est en forma de un archivo de cdigo de ensamblador para cada archivo de entrada no
ensamblador especificado.
-o: Indica el nombre del archivo de salida, cualesquiera sean las etapas cumplidas.
-g: Incluye en el ejecutable generado la informacin necesaria para poder rastrear los errores
usando un depurador, tal como GDB (GNU Debugger).
-Idir: Especifica la ruta hacia el directorio donde se encuentran los archivos marcados para
incluir en el programa fuente. No lleva espacio entre la I y la ruta, as: -I/usr/include.
-Ldir: Especifica la ruta hacia el directorio donde se encuentran los archivos de biblioteca
con el cdigo objeto de las funciones referenciadas en el programa fuente. No lleva espacio
entre la L y la ruta, as: -L/usr/lib.
-v: Muestra los comandos ejecutados en cada etapa de compilacin y la versin del
compilador. Es un informe muy detallado.
1.2. En qu directorio del sistema de archivos Linux se encuentran los archivos de
cabecera de lenguaje C?
/usr/include
Archivos cabecera para el lenguaje de programacin C. Estos deberan estar de hecho debajo de
/usr/lib por coherencia, pero tradicionalmente se ha apoyado de forma mayoritaria esta ubicacin.
Las libreras estticas quedan incluidas en el ejecutable, mientras las dinmicas son
ficheros externos, con lo que el tamao de la aplicacin (nuestro ejecutable) es mayor en el
primer caso que en el segundo. Esto puede ser de capital importancia en aplicaciones muy
grandes, ya que el ejecutable debe ser cargado en memoria de una sola vez.
Las libreras dinmicas son ficheros independientes que pueden ser invocados desde
cualquier ejecutable, de modo que su funcionalidad puede ser compartida por varios
ejecutables. Esto significa que solo se necesita una copia de cada fichero de librera en el
Sistema. Esta caracterstica constituye la razn principal de su utilizacin, y es tambin
origen de algunos inconvenientes, principalmente en sistemas como Windows en los que
existen centenares de ellas.
Otras diferencias:
Si se realizan modificaciones en los mdulos de una librera esttica, es necesario recompilar
todos los ejecutables que la utilizan, mientras que esto no es necesario en el caso de una
librera dinmica, siempre que su interfaz se mantenga.
Las libreras estticas solo se utilizan en la fase de construccin del ejecutable. Las
dinmicas se utilizan durante la ejecucin.
Las libreras estticas, que entran a formar parte indivisible del ejecutable, son cargadas con
el proceso de carga de este. Las libreras dinmicas no necesariamente tienen que cargarse
con la carga inicial (aunque pueden serlo). De hecho, una librera dinmica puede ser
cargada bajo demanda en el momento en que se necesita su funcionalidad, e incluso puede
ser descargada cuando no resulta necesaria.
1.7. Defina la utilidad del comando ldd
Es un comando que enlista las dependencias dinmicas de archivos ejecutables o de objetos
compartidos.
Si el archivo es un archivo ejecutable o un objeto compartido, ldd enlista las rutas de todas las
libreras u objetos compartidos que son cargados cuando es ejecutado el programa o cuando es
cargado el objeto compartido. Si los objetos compartidos no tuvieran permisos de ejecucin ldd
enviar un mensaje de advertencia antes de intentar procesar el archivo.
Su uso ms comn consiste en arrancarlo junto al programa al que se le efecta el trazado, el cual
imprime una lista de llamadas al sistema que dicho programa ejecuta. Es til para averiguar la
causa del fallo de un programa determinado porque informa de situaciones en las que por ejemplo,
el programa est intentando acceder a un fichero que no existe o que no tiene permiso de lectura.
Si un error ocurri durante la ejecucin de una funcin, que linea del programa contiene la
llamada a esa funcin y que parmetros
Como funciona:
gdb permite ejecutar un programa hasta cierto punto, luego detener e imprimir los valores de ciertas
variables en ese punto, o moverse por el programa paso a paso.
3. Partes de un programa.
.section .data
Declara elementos de datos con un valor inicial. Estos elementos de datos se utilizan como
variables dentro del programa en lenguaje ensamblador.
.section .bss
Declara elementos de datos que se crean con un valor cero (o nulo). Estos elementos de datos son
los ms utilizados como zonas de buffer dentro del programa en lenguaje ensamblador.
.section .text
Requerida en todos los programas en lenguaje ensamblador. En este lugar es donde se colocan los
cdigos de instruccin que se declaran dentro del programa ejecutable.
Sitios web visitados
https://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm
http://www.zator.com/Cpp/E1_4_4b.htm
http://www.tutorialesytrucos.com/como-unix-linux/115-revisar-dependencias.html
https://es.wikipedia.org/wiki/GNU_Assembler
https://www.gnu.org/software/gdb/
https://www.tutorialspoint.com/assembly_programming/assembly_basic_syntax.htm
https://es.wikipedia.org/wiki/Strace