In trying to compile a 2 year old, previously working project on a new
machine with a fresh Haskell Platform installation, I bumped into this:

ghc -o -shared -package parsec -lHSrts -lm -lffi -lrt AMIParse.o
AMIModel.o ami_model.o ExmplUsrModel.o Filter.o
/usr/bin/ld: /usr/lib/ghc-7.4.2/libHSrts.a(RtsAPI.o): relocation
R_X86_64_32S against `ghczmprim_GHCziTypes_Czh_con_info' can not be used
when making a shared object; recompile with -fPIC
/usr/lib/ghc-7.4.2/libHSrts.a: could not read symbols: Bad value
collect2: error: ld returned 1 exit status

When I investigated why the *.A, instead of the *.SO, was being picked up,
I found that the *.SO had a `-ghc7.4.2' appended to its base name.

Is this new? What is its purpose?
Do I need to add a `LIB_SUFFIX' variable to my makefile and append it to
all of my `-l<...>'s, or is there a more elegant solution?

Haskell-Cafe mailing list

Reply via email to