Je travail sur un code en recherche ce qui signifie que beaucoup de choses (liens vers librairies, etc...) sont sont définis "à la main" et peuvent facilement casser quand on change de système.
J'ai du changer de machine et par conséquent le code ne compile plus.
J'ai déjà résolu plusieurs problèmes de librairies à recompiler et placer aux bons emplacements, etc... Cependant j'arrive à ma limite de capacités sur ce problème.
En compilant avec gfortran sous Ubuntu dans une machine virtuelle, voici ce que j'obtiens comme log:
Etrangement les noms des fonctions sont changés: un "f" est rajouté au début de leur nom. La fonction "init_rng" devient "finit_rng_" et du coup ne peut pas être linké correctement. J'ai l'impression que cela doit provenir des options de compilations utilisées dans le makefile. Voici les lignes du makefile qui set ces options:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 user@computer:~/Documents/program_name/src$ make gfortran=yes debug=yes gfortran -cpp -g -fbounds-check -fimplicit-none -o program_name modules.o mem.o utils.o FIM.o input.o output.o benchmarks.o read_param.o io_prodimo.o init_program_name.o scattering.o dust_ray_tracing.o dust.o molecules.o grid.o optical_depth.o stars.o density.o PAH.o diffusion.o observables.o thermal_emission.o dust_transfer.o mol_transfer.o program_name.o -L/home/user/Documents/program_name/lib/gfortran/lib/ -lappel_syst -L/home/user/Documents/program_name/lib/gfortran/lib/nr/eq_diff -lnr_eq_diff -L/home/user/Documents/program_name/lib/gfortran/lib/nr/spline -lnr_splin -L/home/user/Documents/program_name/lib/gfortran/lib/nr/sort -lnr_sort -L/home/user/Documents/program_name/lib/gfortran/lib/nr -lnr -L/home/user/Documents/program_name/lib/gfortran/lib/ -lsprng -L/home/user/Documents/program_name/lib/gfortran/lib/ -lcfitsio -I/home/user/Documents/program_name/lib/gfortran/include mem.o*: Dans la fonction «*__mem_MOD_restore_checkpoint*»*: /home/user/Documents/program_name/src/mem.f90:1899*: référence indéfinie vers «*funpack_rng_*» mem.o*: Dans la fonction «*__mem_MOD_save_checkpoint*»*: /home/user/Documents/program_name/src/mem.f90:1802*: référence indéfinie vers «*fpack_rng_*» utils.o*: Dans la fonction «*__utils_MOD_gauss_random*»*: /home/user/Documents/program_name/src/utils.f90:100*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/utils.f90:101*: référence indéfinie vers «*fget_rn_dbl_*» stars.o*: Dans la fonction «*__stars_MOD_emit_packet_ism*»*: /home/user/Documents/program_name/src/stars.f90:862*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/stars.f90:863*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/stars.f90:873*: référence indéfinie vers «*fget_rn_dbl_*» stars.o:/home/user/Documents/program_name/src/stars.f90:874*: encore plus de références indéfinies suivent vers «*fget_rn_dbl_*» dust_transfer.o*: Dans la fonction «*__dust_transfer_MOD_transfert_poussiere*»*: /home/user/Documents/program_name/src/dust_transfer.f90:141*: référence indéfinie vers «*finit_rng_*» /home/user/Documents/program_name/src/dust_transfer.f90:558*: référence indéfinie vers «*fget_rn_dbl_*» mol_transfer.o*: Dans la fonction «*__mol_transfer_MOD_nlte_mol_line_transfer*»*: /home/user/Documents/program_name/src/mol_transfer.f90:307*: référence indéfinie vers «*finit_rng_*» /home/user/Documents/program_name/src/mol_transfer.f90:372*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/mol_transfer.f90:373*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/mol_transfer.f90:374*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/mol_transfer.f90:378*: référence indéfinie vers «*fget_rn_dbl_*» /home/user/Documents/program_name/src/mol_transfer.f90:382*: référence indéfinie vers «*fget_rn_dbl_*» mol_transfer.o:/home/user/Documents/program_name/src/mol_transfer.f90:392*: encore plus de références indéfinies suivent vers «*fget_rn_dbl_*» collect2: error: ld returned 1 exit status Makefile:96: recipe for target 'program_name' failed make: *** [program_name] Error 1
Code Makefile : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 FC_SER = gfortran -cpp FC_OMP = gfortran -cpp -fopenmp OPTS = -O3 -ffast-math #-mtune=athlon -mcpu=athlon -mfpmath=sse -msse DEBUG_OPTS = -g -fbounds-check -ftrace=full -fimplicit-none #-g -C -ggdb -ftrace=full # -Wall -Wextra -Wimplicit-none -Werror=113,115,137,146,147,159,163 -ftrace=full -fbounds-check -freal=nan -finteger=-2109876543 -fmodule-private #PARALLEL = -openmp MACH = #-march=athlon PREC = FFLAGS = -c $(PREC) FFLAGS_EXE = $(PREC) LIBS = $(program_name_INSTALL)/lib/gfortran/ LIBS_PGPLOT = -L$(LIBS) -lpgplot LIBS_FITS = -L$(LIBS) -lcfitsio LIBS_SYST = -L$(LIBS) -lappel_syst # Numerical Recipes MODS_NR = -I$(LIBS)/nr LIBS_NR = -L$(LIBS)/nr -lnr LIBS_NR_EQDIFF = -L$(LIBS)/nr/eq_diff -lnr_eq_diff LIBS_SPLINE = -L$(LIBS)/nr/spline -lnr_splin LIBS_SORT = -L$(LIBS)/nr/sort -lnr_sort LIBS_LU = -L $(LIBS)/nr/LU -lnr_LU # SPRNG FLAGS_SPRNG = $(FLAGS) INCLUDE_SPRNG = -I$(program_name_INSTALL)/include LIBS_SPRNG = -L$(LIBS) -lsprng FF = $(FC_OMP) $(MACH) $(OPTS) FF = $(FC_SER) $(DEBUG_OPTS) SOURCES = modules.f90 sha.f90 utils.f90 mem.f90 FIM.f90 input.f90 output.f90\ benchmarks.f90 read_param.f90 io_prodimo.f90 init_program_name.f90 \ scattering.f90 coated_sphere.f90 dust_ray_tracing.f90 dust.f90 \ molecules.f90 grid.f90 optical_depth.f90 \ stars.f90 density.f90 PAH.f90 diffusion.f90 observables.f90 \ thermal_emission.f90 dust_transfer.f90\ mol_transfer.f90 \ program_name.f90 OBJECTS = $(SOURCES:.f90=.o) main : program_name program_name : $(OBJECTS) $(FF) $(FFLAGS_EXE) -o program_name $(OBJECTS) $(COMP_FITS) $(LIBS_SYST) $(LIBS_NR_EQDIFF) $(LIBS_SPLINE) $(LIBS_SORT) $(LIBS_NR) $(LIBS_SPRNG) $(LIBS_FITS) $(INCLUDE_SPRNG) # Fichiers necessaires aux suivants modules.o : modules.f90 $(FF) $(FFLAGS) $(FLAGS_SPRNG) modules.f90 $(INCLUDE_SPRNG) $(COMP_FITS) # Fichier compile sans optimisation mem.o : mem.f90 modules.o $(FF) $(FFLAGS) $(FLAGS_SPRNG) mem.f90 $(INCLUDE_SPRNG) $(COMP_FITS) # defaut %.o : %.f90 modules.o $(FF) $(FFLAGS) $(FLAGS_SPRNG) $< -o $@ $(MODS_NR) $(INCLUDE_SPRNG) $(COMP_FITS)
Quel est le problème? pourquoi lors de la compilations les fonctions sont renommées? Quel option de compilation pose problème? Ou bien est- autre chose?
Partager