domingo, 4 de enero de 2009

Codificanco en C*

Hace un tiempo tuve que rendir una materia llamada Programación 3 la cuál requería codificar en C*.
Ya terminada esta materia quería compartir con el ó los que sean algunas partes de los laboratorios, así puede llegar a servirle de algo a alguno.

El lenguaje utilizado fué el C con algunas facilidades de C++ el entorno fué el cygwin con los siguientes compiladores:

  • Versión de gcc: 3.4.4
  • Versión de g++: 3.4.4
  • Versión de gdb: 6.3.50-2004-12-28-cvs

Primero que nada, lo mas importante es saber compilar un main por lo que el primer "Tip" será dejar un makefile (archivo con instrucciones de compilación para generar el exe).

Como referencia tenemos:
  • .cpp -> código fuente
  • .h -> módulo de definiciones (se escriben los cabezales de las funciones que se podrán acceder desde fuera del módulo creado)
  • .o -> archivo linkeditado, se genera al momento de la compilación, éstos son el/los módulos compilados en lenguaje máquina. Si no sproporcionan estos archivos sin los .cpp igualmente podremos usar las funciones que contengan (declaradas en el .h).
  • makefile -> archivo son extensión que contiene las instrucciones para compilar


#CC es una variable para el makefile, así no escribo repetidas veces lo mismo. g++ es el compilador
CC=g++
#CFLAGS idem.
#-Wall -> todos los warnings, -Wextra -> Warnings extras
CFLAGS=-Wall -Wextra -ansi -pedantic -O1 -ggdb
#all nombre reservado que dice como se llamará el exe y el path del mismo
all: /home/Usuario/files/nombreDelExe

# EXE ARCHIVO, se deben listar todos los archivos .o (object) que se necesitan
/home/Usuario/files/nombreDelExe: /home/Usuario/files/modulo_1.o /home/Usuario/files/modulo_2.o
$(CC) $(CFLAGS) /home/Usuario/files/modulo_1.o /home/Usuario/files/modulo_2.o -o $@
#$(CC) $(CFLAGS) uso las variables para compilar

#generamos un object por cada modulo que tenemos
/home/Usuario/files/modulo_1.o: /home/Usuario/files/modulo_1.cpp /home/Usuario/files/modulo_1.h Makefile
$(CC) $(CFLAGS) -c /home/Usuario/files/modulo_1.cpp -o $@

/home/Usuario/files/modulo_2.o: /home/Usuario/files/modulo_2.cpp /home/Usuario/files/modulo_2.h Makefile
$(CC) $(CFLAGS) -c /home/Usuario/files/modulo_2.cpp -o $@

# Compilamos el Main
/home/Usuario/files/mainModule.o: /home/Usuario/files/mainModule.cpp Makefile
$(CC) $(CFLAGS) -c /home/Usuario/files/mainModule.cpp -o $@

No hay comentarios: