Problema a far girare codice Fortran per colpa (?) di "MALLOC"


macworld
 Share

Recommended Posts

Salve,

Ho un codice Fortran (77) che sfrutta la funzione MALLOC per allocare la memoria.

Premetto che ho installato i compilatori g77, gfortran sul mio Mac-book, e che tali compilatori funzionano se voglio compilare programmi scritti in Fortran.

Eccezion fatta per un codice che ho, che sfrutta la MALLOC per allocare i byte di memoria.

Quando provo a fare il make nel codice in questione per compilare mi esce fuori tale scritta:

-----------------------------

REBUILDING PROGRAM

g77 -p -o ../RUN/aermod_ff_fw main.o geo_rot.o mode.o coef.o tdsl_ff.o struct_hb.o strcoef.o -L. -lbem -lm

/usr/bin/ld: main.o bad magic number (not a Mach-O file)

/usr/bin/ld: geo_rot.o bad magic number (not a Mach-O file)

/usr/bin/ld: mode.o bad magic number (not a Mach-O file)

/usr/bin/ld: coef.o bad magic number (not a Mach-O file)

/usr/bin/ld: struct_hb.o bad magic number (not a Mach-O file)

/usr/bin/ld: strcoef.o bad magic number (not a Mach-O file)

/usr/bin/ld: archive: ./libbem.a has no table of contents, add one with ranlib(1) (can't load from it)

collect2: ld returned 1 exit status

make[1]: *** [../RUN/aermod_ff_fw] Error 1

make: *** [all] Error 2

----------------------------

Mi è stato detto che il problema dovrebbe essere dovuto proprio alla MALLOC, tuttavia non so come agire.

Se cerco di far girare tale codice da Linux tutto funziona a dovere e compila tranquillamente.

Grazie:)

Link to comment
Share on other sites

Salve,

Ho un codice Fortran (77) che sfrutta la funzione MALLOC per allocare la memoria.

Premetto che ho installato i compilatori g77, gfortran sul mio Mac-book, e che tali compilatori funzionano se voglio compilare programmi scritti in Fortran.

Eccezion fatta per un codice che ho, che sfrutta la MALLOC per allocare i byte di memoria.

Quando provo a fare il make nel codice in questione per compilare mi esce fuori tale scritta:

-----------------------------

REBUILDING PROGRAM

g77 -p -o ../RUN/aermod_ff_fw main.o geo_rot.o mode.o coef.o tdsl_ff.o struct_hb.o strcoef.o -L. -lbem -lm

/usr/bin/ld: main.o bad magic number (not a Mach-O file)

/usr/bin/ld: geo_rot.o bad magic number (not a Mach-O file)

/usr/bin/ld: mode.o bad magic number (not a Mach-O file)

/usr/bin/ld: coef.o bad magic number (not a Mach-O file)

/usr/bin/ld: struct_hb.o bad magic number (not a Mach-O file)

/usr/bin/ld: strcoef.o bad magic number (not a Mach-O file)

/usr/bin/ld: archive: ./libbem.a has no table of contents, add one with ranlib(1) (can't load from it)

collect2: ld returned 1 exit status

make[1]: *** [../RUN/aermod_ff_fw] Error 1

make: *** [all] Error 2

----------------------------

Mi è stato detto che il problema dovrebbe essere dovuto proprio alla MALLOC, tuttavia non so come agire.

Se cerco di far girare tale codice da Linux tutto funziona a dovere e compila tranquillamente.

Grazie:)

Il problema sta nei .o che tu linki insieme.

Loro non sono stati compilati per OS X, infatti ti dice bad Mach-O.

ricompila tutti i .o sotto OS e vedrai che funziona.

Cpu86

Link to comment
Share on other sites

...mi mancano un po' di passi.

Io compilo via Makefile, e quindi è normale che compila in cascata tutti i .f creandosi i .o.

Ok, quindi tu lanci Make e basta? Esiste anche un configure? Se cosi' non fosse prova a cambiare il compilatore che usi: g77 con gfortran.

Che significa compila sotto OS? Io ho OSX 10.4.9.

Ehm, ero di fretta ed ho dimenticato la X, comunque e' OS X. :)

Link to comment
Share on other sites

Si io lancio il Make per compilare, che mi dovrebbe tirare fuori l'eseguibile, che mi lancia il run.

Configure non c'è

Se modifico il Makefile e metto gfortran invece g77, comunque non compila ma cambia un po' ciò che mi scrive:

-----------------------------------

REBUILDING PROGRAM

gfortran -p -o ../RUN/aermod_ff_fw main.o geo_rot.o mode.o coef.o tdsl_ff.o struct_hb.o strcoef.o -L. -lbem -lm

/usr/bin/ld: main.o bad magic number (not a Mach-O file)

/usr/bin/ld: geo_rot.o bad magic number (not a Mach-O file)

/usr/bin/ld: mode.o bad magic number (not a Mach-O file)

/usr/bin/ld: coef.o bad magic number (not a Mach-O file)

/usr/bin/ld: warning tdsl_ff.o cputype (18, architecture ppc) does not match cputype (7) for specified -arch flag: i386 (file not loaded)

/usr/bin/ld: struct_hb.o bad magic number (not a Mach-O file)

/usr/bin/ld: strcoef.o bad magic number (not a Mach-O file)

/usr/bin/ld: archive: ./libbem.a has no table of contents, add one with ranlib(1) (can't load from it)

collect2: ld returned 1 exit status

make[1]: *** [../RUN/aermod_ff_fw] Error 1

--------------------------------------

Link to comment
Share on other sites

Aggiungo:

Tale cosa me la scriva da terminale:

bash,sh,tcsh

Se uso X11 non vede il compilatore g77 e quindi non funge. Tuttavia credo che non sia queto il problema.

In X11 non lo vede in quanto il path di g77 non e' nella varibile d'ambiente $PATH.

Potresti postare il makefile?

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share