Haskell Stack und C Libraries

9

Dies ist möglicherweise ein Duplikat von diesem Beitrag . Aber die einzige Antwort scheint für mich nicht zu funktionieren, also poste ich hier meinen eigenen Fall in der Hoffnung, eine spezifische Lösung zu finden. Ich bin auf Linux Ubuntu Trusty.

Ich habe eine proprietäre C-Bibliothek, libMyLib.so, in / usr / local / lib (die in LD_LIBRARY_PATH enthalten ist).

Ich schrieb die Haskell-Bindungen an diese C-Bibliothek auf die übliche Weise. Main.hs:

%Vor%

Ich kann dieses Programm mit ghci testen und übergebe es der Bibliothek und dem Verzeichnis, wo es es finden kann: ghci /usr/local/lib/ -lMyLib und es funktioniert gut.

Jetzt versuche ich unabhängig davon, Stack zu verwenden, und diesem Leitfaden konnte ich folgen um einige nicht-triviale Programmbeispiele zu erstellen.

Allerdings kann ich das FFI Main.hs-Programm nicht stapeln, wenn es über die fehlende C-Bibliothek klagt:

Erster Versuch:
me@user:~/myProject$ stack build

%Vor%

Vor dem zweiten Versuch habe ich Folgendes hinzugefügt:
- extra-lib-dirs: [/usr/local/lib] zur Datei stack.yaml hinzugefügt.
- extra-include-dirs: [/usr/local/lib] zur Datei stack.yaml hinzugefügt (obwohl es wahrscheinlich nicht benötigt wird).
- hinzugefügt extra-libraries: lMyLib in der Cabal-Datei des Projekts unter den Etiketten ausführbare oder Bibliothek (Ich habe auch extra-libraries: libMyLib.so mit dem gleichen Ergebnis versucht).

Zweiter Versuch:
me@user:~/myProject$ stack build

%Vor%

Jetzt weiß es also, welche C-Bibliothek es benötigt, da es darüber geklagt hat, während das richtige extra Bibliotheksverzeichnis hinzugefügt wurde (siehe das Ende der Fehlermeldung). Ich bin mir nicht sicher, ob der Kommentar (you may need the "-dev" version) relevant ist oder nicht.

Meine Frage: Ich stecke hier fest. Gibt es noch etwas, was ich mit den yaml- oder den cabal-Dateien oder anderswo machen sollte, damit stack build die C-Bibliothek findet?

    
Janthelme 10.01.2016, 02:40
quelle

1 Antwort

4

extra-libraries sollte nur den Namen der Basisbibliothek haben, also extra-libraries: MyLib .

    
Reid Barton 10.01.2016, 04:35
quelle

Tags und Links