linux - 如何在具有 Windows (PE) 目标的 Linux 机器上交叉编译 haskell 程序?

标签 linux windows haskell llvm cross-compiling

我想开发将在 Windows 上运行并与 Windows 操作系统 API 交互的 haskell 代码,但我想在 Linux 机器上进行。我该如何做到这一点?我可以在 windows 机器上编译并且可以工作,但不能在 linux 机器上编译。 Haskell 可以使用 LLVM 后端,不是吗?我可以使用 LLVM 来完成这个吗?或者以某种方式与 MinGW 合作?

最佳答案

我尝试了很多可能性,包括 Wine 上的 GHC(对我没有用,尽管有很多广告说它“开箱即用”)。

对于交叉编译,一个问题在于让 GHC 找到您的 C 库和 DLL(对于 Windows)。 Template Haskell 也会让你头疼(因为它需要加载 linux 库然后为 windows 编译)。

我从来没有设法正确解决这些问题。

最后,我选择在 Windows VM 上安装 GHC,现在我使用脚本将内容推送到存储库,通过 SSH 连接到 Windows 机器,拉取、清理、重新编译和测试,所有这些都从一个linux CLI 并向我提供有关 Windows 上发生的情况的反馈。

编辑:我提供这个答案并不是为了阻止任何人尝试更聪明的事情。我也对真正的交叉编译感兴趣,如果有人有好的解决方案,我会洗耳恭听。我的替代方法总是有效,但它确实很痛苦,必须为此启动虚拟机。此外,这意味着每个架构每个操作系统使用一个虚拟机,这非常繁重。

关于linux - 如何在具有 Windows (PE) 目标的 Linux 机器上交叉编译 haskell 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22120335/

相关文章:

linux - Shellscript If 语句返回错误

python - Windows:在 Windows 资源管理器中按下 Ctrl+C 时实际发生了什么

Haskell:类型类:多重继承示例

haskell - 如何将 Float 小数部分的前 32 位转换为 Word32?

haskell - 使用管道 4.0 折叠流的子集

linux - 如何安装 dorodango 包管理器 Scheme 语言

linux - 如何使用 "top"仅提取 CPU 使用率和进程名称(命令)列?

python - Python中的子进程执行两个任务?

c++ - 如何发送信息

linux - 如何在 Windows 平台上从 Jenkins 运行 qnx 可执行文件?