ghc Das gemeinsame Binärkompilieren gibt -fPIC-Fehler für Standardbibliotheken

9

Ich möchte ein gemeinsames Objekt (node.js addon) erstellen, das in Haskell geschrieben wurde.

Befehl zum Kompilieren:

%Vor%

Ich verstehe, dass alle Haskell-Bibliotheken mit der Option -fPIC kompiliert werden sollten:

%Vor%

Bedeutet das, dass Basisbibliotheken ohne die Option -fPIC kompiliert werden und ich alles selbst kompilieren sollte (indem ich das Script cabal bootstrap.sh hackt)?

Bearbeiten (Jan, 4):

halloWorld.hs:

%Vor%

nodehs.cc:

%Vor%

hsbracket.c (sehr Standard):

%Vor%

Kompilierbefehl:

%Vor%

Ergebnis:

/ usr / bin / ld: /usr/local/lib/ghc-7.8.4/base-4.7.0.2/libHSbase-4.7.0.2.a(Base__114.o): Umzug R_X86_64_32S gegen 'stg_bh_upd_frame_info' kann nicht verwendet werden, wenn ein gemeinsames Objekt erstellt wird; kompiliere mit -fPIC /usr/local/lib/ghc-7.8.4/base-4.7.0.2/libHSbase-4.7.0.2.a: Symbole konnten nicht gelesen werden: Falscher Wert collect2: Fehler: ld gab 1 Exit-Status

zurück

Mit -dynamic funktioniert alles, aber verlinkt alle Haskell Bibliotheken dynamisch.

Wie kann ich Haskell-Bibliotheken statisch in Addons kompilieren?

Für genau die gleiche Umgebung und das gleiche Testen, füge ich Dockerfile ( docker build -t compile-node . && docker run -v /home/me/nodehs:/src:rw compile-node )

hinzu %Vor%     
Kaiko Kaur 24.11.2014, 15:56
quelle

0 Antworten

Tags und Links