W systemie Windows GHC jest rozpowszechniany z gcc i g ++, np. pod ghc-7.6.3\mingw\bin
. Od download page, jest również zauważyć pod Windows binarne pobieranie, że kompilacja dla Windows "zawiera również obsługę kompilacji plików C++."Dlaczego GHC jest rozprowadzany z gcc i g ++?
Mogę sobie wyobrazić, że dystrybucja tych kompilatorów jest tylko dla wygody, ponieważ system Windows nie ma żadnych. Mogę sobie także wyobrazić, że jest to konieczne, aby używać FFI, ale nie jestem w 100% pewny. Na przykład, chociaż GHC będzie kompilował pliki .c i .cpp przy użyciu własnych kompilatorów gcc/g ++, GHC również provides options wybierze dowolny kompilator i linker, który chcesz. I rzeczywiście, możesz określić swój własny gcc/g ++ i wydaje się, że działa. Możesz nawet wyciąć GHC z pętli, kompilując wcześniej pliki .c/.cpp, i tylko wywołując GHC, aby skompilować kod Haskella i połączyć go wszystkie przy użyciu -pgml
(chociaż ogólny efekt jest taki sam jak użycie -pgmc
i -pgml
).
Teraz wydaje do pracy, ale ma to polegać na czystego szczęścia, które można określić -pgml
i -pgmc
być wersja gcc, który jest zgodny z tym, co GHC ma na myśli? Innymi słowy, kiedy używam FFI, czy naprawdę powinienem tylko skompilować i połączyć wszystko z wywołaniami GHC?
Używanie GHC do wszystkiego jest ogólnie najłatwiejszym sposobem. I (mogę się mylić), jeśli dobrze pamiętam, rzeczy nie działają zbyt dobrze, jeśli spróbujesz użyć MSVC (i mam niejasne wspomnienie, że Cygwin też ma problemy). –