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
)
Tags und Links compilation haskell