[Haskell-cafe] Why the `-ghc7.4.2' suffix on *.SO base names?

Captain Freako capn.freako at gmail.com
Thu Apr 25 15:17:28 CEST 2013

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 libami.so -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?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130425/392b7de0/attachment.htm>

More information about the Haskell-Cafe mailing list