Captain Freako | 25 Apr 15:17 2013

Why the `-ghc7.4.2' suffix on *.SO base names?

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
Haskell-Cafe <at>