2014-06-20 3 views
0

J'ai un C & Fortran Codes développés dans FreeBSD et je veux l'exécuter sur mon système Windows. Donc j'utilise Cygwin comme une alternative. Mis à part les codes il y a aussi un Makefile et j'ai essayé et fait quelques changements dans Makefile. Maintenant makefile s'exécute parfaitement mais à un point dans makefile cela me donne beaucoup d'erreurs liées aux bibliothèques Fortran et Lapack. J'ai vérifié mes bibliothèques et toutes les deux sont présentes dans mon système. Après avoir référé les questions pertinentes du forum, j'ai essayé et utilisé les nombreuses options. Mais ça n'a pas marché. Et je suis nouveau à ce truc Makefile. S'il vous plaît, aidez-moi à régler ces erreurs.FreeBSD à Windows en utilisant Cygwin


ci-après le Makefile


#BASE_DIR=.. 
STD_LIB= -lm -llapack -lblas -lgcc -lgfortran 
#PROF_LIB=-lm_p -llapack_p -lblas_p -lg2c_p -L/usr/local/lib/gcc46 -lgfortran 
#PROF=-pg 

:if empty(PROF) 
LDFLAGS=$(STD_LIB) 
:else 
LDFLAGS=$(PROF_LIB) 
:endif 


#LDFLAGS+=-L $(TOOL_DIR)/trapfpe -ltrapfpe 

#test:: 
# echo LDFLAG=$(LDFLAGS) 

CC=/usr/bin/gcc 
FC=/usr/bin/gfortran 
CFLAGS= -g -ggdb -O3 -ffast-math -I -Wall $(PROF) 
#CFLAGS= -g -ffast-math -I -Wall $(PROF) 
FFLAGS= -g -I -Wall $(PROF) -fbounds-check 
COMMON_OBJS=phase_unwrapping-lib.o matrix.o splotlib.o args_lib.o 
UNWRAP_TOOL=rot_comp_unwrap 
SUB=res_pos 
ALL=$(UNWRAP_TOOL) 
WORK=$(ALL) 
WORK+=poisson_test boundary_search clustering band_matrix 

default:: ctags $(WORK) 
all:: $(ALL) 

ctags::tags 
tags:$(WORK:C/$/.c/) $(SUB:C/$/.c/) 
ctags -w $ $^ 
# ctags -w $ (.ALLSRC) 

GA_OBJS=res_pos.o ga-core.o ga-fit.o data.o 
CLUSTERING_OBJS=clustering.o 
BOUNDARY_SUB_OBJS=poisson_enclosed_Neumann.o intlin.o solve_flux_eps_least_norm.o  band_matrix.o 
BOUNDARY_OBJS=boundary_search.o $(BOUNDARY_SUB_OBJS) 

SRCS=rot_comp_unwrap.c clustering.c boundary_search.c poisson_test.c res_pos.c band_matrix.c 


rot_comp_unwrap:rot_comp_unwrap.o $(GA_OBJS) $(CLUSTERING_OBJS) $(BOUNDARY_OBJS) $(COMMON_OBJS) 
$(CC) $(CFLAGS) -o [email protected] $(LDFLAGS) $^ 
# $(CC) $(CFLAGS) -o $(.TARGET) $(LDFLAGS) $(.ALLSRC) 
res_pos:res_pos.c ga-core.o ga-fit.o data.o 
$(CC) -o [email protected] -DMAIN $(CFLAGS) $(LDFLAGS) $^ 
# $(CC) -o $(.TARGET) -DMAIN $(CFLAGS) $(LDFLAGS) $(.ALLSRC) 

poisson_test:poisson_test.o poisson_enclosed_Neumann.o intlin.o 
$(CC) -o [email protected] $(CFLAGS) $(LDFLAGS) $^ 
# $(CC) -o $(.TARGET) $(CFLAGS) $(LDFLAGS) $(.ALLSRC) 

boundary_search:boundary_search.c $(BOUNDARY_SUB_OBJS) $(COMMON_OBJS) 
$(CC) -DMAIN $(CFLAGS) -O3 -o [email protected] $(LDFLAGS) $^ 
# $(CC) -DMAIN $(CFLAGS) -O3 -o $(.TARGET) $(LDFLAGS) $(.ALLSRC) 

band_matrix:band_matrix.c $(COMMON_OBJS) 
$(CC) -DMAIN $(CFLAGS) -ffast-math -o [email protected] $(LDFLAGS) $^ 
# $(CC) -DMAIN $(CFLAGS) -ffast-math -o $(.TARGET) $(LDFLAGS) $(.ALLSRC) 
clustering:clustering.c $(COMMON_OBJS) 
$(CC) -DMAIN $(CFLAGS) -ffast-math -o [email protected] $(LDFLAGS) $^ 
# $(CC) -DMAIN $(CFLAGS) -ffast-math -o $(.TARGET) $(LDFLAGS) $(.ALLSRC) 

clean:: 
rm *.o 

backup:: 
cp -pf *.c *.F *.h *.o Makefile $(WORK) bak 

depend:: 
mkdep ${CFLAGS} ${SRCS} 

Après sont les erreurs que je reçois


/usr/bin/gcc -g -ggdb -O3 -ffast-math -I -Wall -o rot_comp_unwrap rot_comp_unwrap.o res_pos.o ga-core.o ga-fit.o data.o clustering.o boundary_search.o poisson_enclosed_Neumann.o intlin.o solve_flux_eps_least_norm.o band_matrix.o phase_unwrapping-lib.o matrix.o splotlib.o args_lib.o 
ga-core.o: In function `cpgene_': 

/cygdrive/e/Lc-code1/ga-core.F:93: undefined reference to `_gfortran_runtime_error_at' 

/cygdrive/e/Lc-code1/ga-core.F:93:(.text+0x5c): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `_gfortran_runtime_error_at' 

/cygdrive/e/Lc-code1/ga-core.F:113:(.text+0x459): additional relocation overflows omitted from the output 

/cygdrive/e/Lc-code1/ga-core.F:116: undefined reference to `_gfortran_transfer_real_write' 

/cygdrive/e/Lc-code1/ga-core.F:116: undefined reference to `_gfortran_st_write_done' 

ga-core.o: In function `fluct_': 

/cygdrive/e/Lc-code1/ga-core.F:274: undefined reference to `_gfortran_rand' 

ga-core.o:/cygdrive/e/Lc-code1/ga-core.F:278: more undefined references to `_gfortran_runtime_error_at' follow 

ga-fit.o: In function `gapara_': 

/cygdrive/e/Lc-code1/ga-fit.F:241: undefined reference to `_gfortran_st_open' 

/cygdrive/e/Lc-code1/ga-fit.F:243: undefined reference to `_gfortran_st_read' 

/cygdrive/e/Lc-code1/ga-fit.F:243: undefined reference to `_gfortran_transfer_integer' 

/cygdrive/e/Lc-code1/ga-fit.F:243: undefined reference to `_gfortran_st_read_done' 

/cygdrive/e/Lc-code1/ga-fit.F:244: undefined reference to `_gfortran_st_read' 

/cygdrive/e/Lc-code1/solve_flux_eps_least_norm.F:73: undefined reference to `dgesv_' 

/cygdrive/e/Lc-code1/solve_flux_eps_least_norm.F:109: undefined reference to `dgbsv_' 

collect2: error: ld returned 1 exit status 
Makefile:47: recipe for target 'rot_comp_unwrap' failed 
make: *** [rot_comp_unwrap] Error 1 

Répondre

1

Vous avez laissé tomber tous librar externe ies de vos indicateurs de liens. Ajoutez les bibliothèques de STD_LIB à votre commande.

+0

Pouvez-vous préciser votre réponse? – user3759985

+0

décommenter la ligne LDFLAGS = $ (STD_LIB) – arved

+0

Je l'ai fait, mais c'est encore les mêmes erreurs.Il existe une différence entre les fichiers fortran d'extension .f & .F.Comme tous mes fichiers Fortran sont avec l'extension .F. – user3759985

Questions connexes