Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
16 Views

Can you read the following makefile?

I have the following makefile, its name is release.makefile

I executed the file by 'make -f release.makefile' in terminal of mac.

However, I only see Parameters.o Globals.o umfpack.o Procedures.o and can't see  AllocateArrays.o SetParameters.o Grids.o ... (object files of subroutine)

 

FC = ifort
FCFLAGS = -m64 -traceback -O3 -qopenmp -implicitnone  -Wl,-stack_size,0x100000000 -L/Volumes/FILES/Projects/Fortran/SuiteSparse/lib -lumfpack -lamd -lcholmod -lcolamd -lsuitesparseconfig -lblas 
LDFLAFS = -m64 -traceback -O3 -qopenmp -implicitnone  -Wl,-stack_size,0x100000000 -L/Volumes/FILES/Projects/Fortran/SuiteSparse/lib -lumfpack -lamd -lcholmod -lcolamd -lsuitesparseconfig -lblas 
# -O3

PROG = $(OUT)

MOD = Parameters.o Globals.o umfpack.o Procedures.o 

SUBR =     AllocateArrays.o SetParameters.o Grids.o IterateBellman.o HJBUpdate.o cumnor.o rtsec.o StationaryDistribution.o SaveSteadyStateOutput.o DistributionStatistics.o rtbis.o rtflsp.o InitialSteadyState.o FinalSteadyState.o SolveSteadyStateEqum.o Calibration.o MomentConditions.o dfovec.o newuoa-h.o newuob-h.o update.o trsapp-h.o biglag.o bigden.o mnbrak.o golden.o sort2.o  CumulativeConsumption.o  FnDiscountRate.o  OptimalConsumption.o FnHoursBC.o  ImpulseResponses.o IRFSequence.o Transition.o  SaveIRFOutput.o IterateTransitionStickyRb.o IterateTransOneAssetStickyRb.o FnCapitalEquity.o CumulativeConsTransition.o DiscountedMPC.o DiscountedMPCTransition.o


OBJ = $(MOD) $(SUBR)

$(PROG).out: $(OBJ) Main.o
    $(FC) $(FCFLAGS) -o $@ $^ $(LDFLAGS)
Main.o: $(MOD)

%: %.o
    $(FC) $(FCFLAGS) -o $@ $^ $(LDFLAGS)

%.o: %.f90
    $(FC) $(FCFLAGS) -c $<

================================================

 

Furthermore, when I execute ifort Main.f90,

I encounter the following error, 

===============================================

Undefined symbols for architecture x86_64:

  "_calibration_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_finalsteadystate_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_globals_mp_calibratecostfunction_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_globals_mp_doimpulseresponses_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_impulseresponses_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_initialsteadystate_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_savesteadystateoutput_", referenced from:

      _MAIN__ in ifort3mKuPv.o

  "_setparameters_", referenced from:

      _MAIN__ in ifort3mKuPv.o

============================================

Do you have any idea?

Thank you so much in advance.

Best,

Seungcheol

0 Kudos
4 Replies
Highlighted
Black Belt
16 Views

OUT is not defined. Because of that, PROG is not defined, and the default target is .out . LDFLAGS has been incorrectly typed as LDFLAFS.

0 Kudos
Highlighted
16 Views

Hi mecej4,

Thank you for your comment. It's really helpful!!

Can you help me a little bit more? I don't have any knowledge of Fortran, so, I don't know how to define OUT.

Can you give me a just easy example? or can you suggest a quick correction in this file?

I look forward to your reply.

Best,

Seungcheol

0 Kudos
Highlighted
Black Belt
16 Views

The issue has next to nothing to do with Fortran.

You appear to have an incomplete or modified makefile. If you do not know how to modify makefiles, do not do so. Take the original makefile and use it.

You could try fixing the error in the the makefile and then running make using the command make OUT=Main.out . If that works, the resulting executable will be Main.out.

0 Kudos
Highlighted
Black Belt
16 Views

Some of those libraries would be covered by -mkl . Libraries built with gfortran which may be available on your system will not work with ifort.

0 Kudos