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
Pouvez-vous préciser votre réponse? – user3759985
décommenter la ligne LDFLAGS = $ (STD_LIB) – arved
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