CUESTIÓN
Me gustaría con los mismos ficheros que las prácticas
me funcionaran tanto en casa con Linux como en clase
con el servidor.
SOLUCIÓN
Casi todas las llamadas al sistema y el código que escribáis para
Linux funcionará sin ninguna modificación en el servidor. Sin embargo,
habrá veces en que algunas zonas del código sean diferentes para ambos
sistemas.
En ese caso, lo mejor es recurrir a la compilación condicional basada
en la definición de una macro. La compilación condicional tiene
la ventaja de que en el ejecutable solamente aparece y ocupa sitio el
código propio de cada sistema.
/*****************************************************/
/* Aquí irá la zona común para el servidor y Linux */
/*****************************************************/
#ifdef LINUX_SOURCE
/*******************************************/
/* Aquí metemos el código propio de Linux */
/*******************************************/
#else
/*******************************************************/
/* Aquí metemos el código propio del servidor de clase */
/*******************************************************/
#endif
/*****************************************************/
/* Aquí sigue la zona común para el servidor y Linux */
/*****************************************************/
El fichero makefile
también tiene que tener alguna
diferencia. Tiene que definir la macro LINUX_SOURCE para Linux y
no para el servidor.
Aquí va una posibilidad de cómo
hacer esto para un programa que se llame programa.c
:
nada:
<TAB>@echo "Teclea make linux o make clase."
clase:
<TAB>@make programa
linux:
<TAB>@make CCOPTS=-DLINUX_SOURCE programa
programa: programa.o
<TAB>gcc $(CCOPTS) programa.o -o programa
programa.o: programa.c programa.h
<TAB>gcc $(CCOPTS) -c programa.c
© 2010 Guillermo González Talaván y Ana Belén Gil González