Tôi đã bị thu hút khi tôi nghe nói rằng GHC có thể xuất ra tệp cho C.Không thể xuất từ .hs sang .hc bằng GHC trong Haskell
Trình biên dịch Haskell Glasgow (GHC) biên dịch thành mã gốc trên một số kiến trúc khác nhau — cũng như ANSI C — sử dụng ngôn ngữ trung gian.
Vì vậy, tôi đã cài đặt Nền tảng Haskell và tạo tệp .hs đơn giản.
main = putStrLn "Hello, World!"
Và theo hướng dẫn.
C Dừng sau khi tạo ra C (file .hc)
Bây giờ tôi chạy lệnh.
ghc -C test.hs
Nhưng nó không tạo tệp .hc, cũng không dừng quá trình biên dịch giữa.
$ ls
test.exe test.hi test.hs test.o
Bạn đã thử vượt qua -fvia-C ngoài -C chưa? IIRC GHC không sử dụng backend C theo mặc định (nó có thể tạo trực tiếp các assembly cho các máy khác nhau, bao gồm cả llvm). – Cubic
Tôi nhận được cảnh báo rằng "Cờ -fvia-C không làm gì cả, nó sẽ bị xóa trong bản phát hành GHC trong tương lai". Augustss, tại sao tôi sẽ thất vọng? –
Nó trông hoàn toàn không giống như mã C một con người sẽ viết. Đó là về cơ bản không đọc được. Nó cũng không hiệu quả như bạn mong đợi. Cách duy nhất nó được hiệu quả là bằng cách mangling mã lắp ráp được tạo ra bởi trình biên dịch C. – augustss