<div dir="ltr"><div><div>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:<br><br><font size="1"><span style="font-family:courier new,monospace">ghc -o libami.so -shared -package parsec -lHSrts -lm -lffi -lrt AMIParse.o AMIModel.o ami_model.o ExmplUsrModel.o Filter.o<br>

/usr/bin/ld: /usr/lib/ghc-7.4.2/libHSrts.a(RtsAPI.o): relocation R_X86_64_32S against `ghczmprim_GHCziTypes_Czh_con_info&#39; can not be used when making a shared object; recompile with -fPIC<br>/usr/lib/ghc-7.4.2/libHSrts.a: could not read symbols: Bad value<br>

collect2: error: ld returned 1 exit status<br></span></font><br></div><div>When I investigated why the *.A, instead of the *.SO, was being picked up, I found that the *.SO had a `-ghc7.4.2&#39; appended to its base name.<br>
<br></div><div>Is this new? What is its purpose?<br></div><div>Do I need to add a `LIB_SUFFIX&#39; variable to my makefile and append it to all of my `-l&lt;...&gt;&#39;s, or is there a more elegant solution?<br><br></div>
Thanks!<br></div>-db</div>