[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Compilación parcial



2008/6/3 José Pablo Fonfría <jpablo.fonfria@gmail.com>:
> Hola a tod@s,
>
> Me gustaría haceros una pregunta acerca de programación. Soy científico,
> llevo haciendo un programa en fortran 90 desde hace varios años y
> compilándolo con gfortran. Debido al gran tiempo empleado, el número de
> líneas del código es ya relativamente grande. El problema es que, conforme
> el programa crece en extensión y complejidad, el tiempo empleado en cada
> compilación aumenta.
>
> ¿Existe alguna manera de compilar una parte del código completo y así
> reducir el tiempo de compilación?
>
> Gracias de antemano.
>
> Pablo.
>
>
> --
> To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
>
>

Si tienes el programa en modulos, claro que si, puedes usar GNUmakefile

Te paso un codigo que tengo de un colega, como ejemplo, tendrias que
cambiarle las banderas de compilador y del linker, tambien el nombre
del programa. En este caso el compilador que uso es gcc, el linker es
mpicc y el formato de tus archivos, en este caso como uso C, pues son
.c pero en fortran supongo usas .f95 o .f

lo copias a tu path (PRIMERO PRUEBALO EN OTRO LADO NO SEA QUE VAYAS A
MODIFICAR LOS WILDCARDS y borres todo) y lo usas como:

make (este comando te compila solo los modulos que haz modificado!!!)
make clean (limpia todos los objetos, asi que si le daz primero make
clean y despues make te compilara TODO tu codigo)
make install (te instala el codigo en /usr/bin, lo tienes que ejecutar
como root)

Esto te ahorrara muchisimo tiempo al compilar solo lo que modificas.
Ahora si tienes tu codigo en un solo bloque, pues creo que sera medio
complicado.


#
# $Id$
#
# MAKEFILE GNU MAKE for Linux Version 1.0
# Copyright (C) 2002 by Free Software Foundation, Inc.
# Author: Antonio Tellez Flores <atellezf@yahoo.com.mx>
# Modify by: itztli@gmail.com
#                         COPYING
#
# This  program  is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License  as
# published by the Free Software Foundation; either version 2, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty  of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR  PURPOSE.  See  the
# GNU General Public License for more details.
#
# You  should  have  received  a  copy  of the GNU General Public
# License along with this program; if  not,  write  to  the  Free
# Software Foundation, Inc., 675  Mass  Ave, Cambridge, MA 02139,
# USA.
#
# ###################### Revision History #######################
#
# $Log$
# ###############################################################

#================================================================
# GNU C COMPILER FOR LINUX
#================================================================
#CFLAGS := -g -ggdb -I.
# Make declarations

CC := gcc
LINKER := mpicc
# C flags for debbuging.
CFLAGS := -g -ggdb -I. -O
LDFLAGS := -lm
CFILES := $(wildcard *.c)
OBJS := $(patsubst %.c, %.o, $(CFILES))
PROGRAM := pakal
RM := rm -f
INSTALAR := cp $(PROGRAM) /usr/bin/

#----------------------------------------------------------------

# Make rules

.PHONY: all clean distclean

compile: $(PROGRAM)

all:    clean compile
        @echo -en "\n"
clean:
        $(RM) *~ core $(OBJS) "#*"

distclean: clean
        $(RM) $(PROGRAM)

install:
        $(INSTALAR)
#----------------------------------------------------------------

# Make depend

$(OBJS): %.o: %.c
        $(CC) -c $<
        @echo -en "\n"

$(PROGRAM): $(OBJS)
        $(LINKER) $(LDFLAGS) $(OBJS) -o $(PROGRAM)

#---------------------------------------------------------------

# End Make



-- 
Atte

ItZtLi

¤º°°º¤ø,¸¸,ø¤º°°º¤ø,¸¸,ø¤º°`°º¤ø,¸
 Nahui Tonalli Icniuhtli.
¤º°°º¤ø,¸¸,ø¤º°°º¤ø,¸¸,ø¤º°`°º¤ø,¸


Reply to: