Estoy tratando de instalar GHC con soporte de -fPIC en Fedora. He cogido un tarball fuente ya que parece que no tiene uno binario.Compilación de ghc con soporte de -fPIC
En Build.mk He cambiado el tipo de construcción rápida a
ifeq "$(BuildFlavour)" "quick"
SRC_HC_OPTS = -H64m -O0 -fasm -fPIC
GhcStage1HcOpts = -O -fasm -fPIC
GhcStage2HcOpts = -O0 -fasm -fPIC
GhcLibHcOpts = -O -fasm -fPIC
SplitObjs = NO
HADDOCK_DOCS = NO
BUILD_DOCBOOK_HTML = NO
BUILD_DOCBOOK_PS = NO
BUILD_DOCBOOK_PDF = NO
endif
por desgracia, al compilar sigo teniendo el error ld
ghc -fglasgow-exts --make -shared -oHs2lib.a /tmp/Hs2lib924498/Hs2lib.hs dllmain.o -static -fno-warn-deprecated-flags -O2 -package ghc -package Hs2lib -i/home/phyx/Documents/Haskell/Hs2lib -optl-Wl,-s -funfolding-use-threshold=16 -optc-O3 -optc-ffast-math
Linking a.out ...
/usr/bin/ld: /tmp/Hs2lib924498/Hs2lib.o: relocation R_X86_64_32 against `ghczmprim_GHCziUnit_Z0T_closure' can not be used when making a shared object; recompile with -fPIC
/tmp/Hs2lib924498/Hs2lib.o: could not read symbols: Bad value
Así que parece que GHC-prim todavía ISN 'compilado con -FPIC También le he dicho a cabal que construya cualquier paquete con -fPIC y lo comparta.
¿Alguien tiene alguna idea?
EDIT: Gracias a dcouts, he podido hacer algunos progresos. Pero ahora estoy en el punto donde creo que libffi no está compilado con -fPIC. He editado el archivo MAKE (.in) pero hasta ahora, no tuve suerte.
El nuevo comando es:
ghc -fPIC -shared dllmain.o Hs2lib.o /usr/local/lib/ghc-7.0.3/libHSrts.a -o Hs2lib.so
donde dllmain.c y Hs2lib.hs ambos se han compilado utilizando -fPIC. El error que consigo es:
/usr/bin/ld: /usr/local/lib/ghc-7.0.3/libHSffi.a(closures.o): relocation R_X86_64_32
against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/ghc-7.0.3/libHSffi.a: could not read symbols: Bad value
collect2: ld devolvió el código de salida 1
¿qué versión de GHC intenta compilar? – fuz
ghc versión 7.0.3 – Phyx
¿No necesita '-optc-fpic' o quizás' -fPIC' en la línea de comandos también? –