[Haskell-cafe] Linking failing due to Control.Monad.State.Strict?

phil at beadling.co.uk phil at beadling.co.uk
Thu Aug 6 21:38:29 EDT 2009


Hi,

I'm getting a linker error when generating makefile dependencies on  
the below library for a program I'm using.  It links fine under 'ghc -- 
make'.  I'm using (more or less) the makefile from the haskell docs.   
I am using the Strict State Monad in the object files it is  
complaining about, the compile is fine, just the linker which is  
blowing up. Any ideas what is causing this?

I'm using GHC 6.10.4 on PPC Mac OS X 10.5.

I've included the makefile below the error.

Cheers!

Phil.


ghc -o OptionCalculator -O2 -Wall  ./FrameworkInterface.o ./Maths/ 
Prime.o ./Misc/Debug.o ./MonteCarlo/DataStructures.o ./MonteCarlo/ 
European.o ./MonteCarlo/Framework.o ./MonteCarlo/Interface.o ./ 
MonteCarlo/Lookback.o ./Normal/Acklam.o ./Normal/BoxMuller.o ./Normal/ 
Framework.o ./Normal/Interface.o ./OptionCalculator.o ./Random/ 
Framework.o ./Random/Halton.o ./Random/Interface.o ./Random/Ranq1.o
Undefined symbols:
   "_mtlzm1zi1zi0zi2_ControlziMonadziStateziStrict_a29_info",  
referenced from:
       _r1hl_info in Acklam.o
       _rGL_info in BoxMuller.o
   "_mtlzm1zi1zi0zi2_ControlziMonadziStateziStrict_a29_closure",  
referenced from:
       _r1hl_srt in Acklam.o
       _rGL_srt in BoxMuller.o
   "___stginit_mtlzm1zi1zi0zi2_ControlziMonadziStateziStrict_",  
referenced from:
       ___stginit_FrameworkInterface_ in FrameworkInterface.o
       ___stginit_FrameworkInterface_ in FrameworkInterface.o
       ___stginit_MonteCarloziEuropean_ in European.o
       ___stginit_MonteCarloziEuropean_ in European.o
       ___stginit_MonteCarloziFramework_ in Framework.o
       ___stginit_MonteCarloziFramework_ in Framework.o
       ___stginit_MonteCarloziLookback_ in Lookback.o
       ___stginit_MonteCarloziLookback_ in Lookback.o
       ___stginit_NormalziAcklam_ in Acklam.o
       ___stginit_NormalziAcklam_ in Acklam.o
       ___stginit_NormalziBoxMuller_ in BoxMuller.o
       ___stginit_NormalziBoxMuller_ in BoxMuller.o
       ___stginit_NormalziFramework_ in Framework.o
       ___stginit_NormalziFramework_ in Framework.o
       ___stginit_RandomziFramework_ in Framework.o
       ___stginit_RandomziFramework_ in Framework.o
       ___stginit_RandomziHalton_ in Halton.o
       ___stginit_RandomziHalton_ in Halton.o
       ___stginit_RandomziRanq1_ in Ranq1.o
       ___stginit_RandomziRanq1_ in Ranq1.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [OptionCalculator] Error 1




Makefile:


HC      = ghc
HC_OPTS = -O2 -Wall $(EXTRA_HC_OPTS)

SRCS := $(shell find . -name "*.hs" -print)
OBJS = $(SRCS:.hs=.o)
PROG = OptionCalculator

.SUFFIXES : .o .hs .hi .lhs .hc .s

${PROG} : $(OBJS)
	  rm -f $@
	  $(HC) -o $@ $(HC_OPTS) $(OBJS)

# Standard suffix rules
.o.hi:
	@:

.lhs.o:
	$(HC) -c $< $(HC_OPTS)

.hs.o:
	$(HC) -c $< $(HC_OPTS)

.o-boot.hi-boot:
	@:

.lhs-boot.o-boot:
	$(HC) -c $< $(HC_OPTS)

.hs-boot.o-boot:
	$(HC) -c $< $(HC_OPTS)

clean :
	find . -name "*.hi" -exec rm -f {} \;
	find . -name "*.o" -exec rm -f {} \;
	rm -f ${PROG}

depend :
	ghc -M $(HC_OPTS) $(SRCS)




More information about the Haskell-Cafe mailing list