Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

Can you read the following makefile?

lee__seungcheol
Beginner
235 Views

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
mecej4
Black Belt
235 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.

lee__seungcheol
Beginner
235 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

mecej4
Black Belt
235 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.

TimP
Black Belt
235 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.

Reply