
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? Thanks! -db