GHC 生成的 .hi .p_hi 和 .dyn_hi 文件有什么区别

What is difference between .hi .p_hi and .dyn_hi files generated by GHC

我正在尝试减小包含 Nix 派生的存档的大小。我注意到每个模块都有 3 个文件 hi,p_hi 和 dyn_hi,大小都差不多。

ghc(提示)解释器只需要 hi,如果我删除其余变体,什么也不会发生。

p_hi 和 dyn_hi 沙袋也是吗?

通常 .hi 文件是关联的 .o 目标文件的接口定义。旧版本的 GHC 一次只能使用一个版本。当库需要分析信息或动态链接时,这会导致问题,因为每次都需要使用新选项编译库。

为了解决这个问题,GHC 添加了额外的功能,使其可以同时安装单独的对象和接口文件。

.p_* 文件是在启用分析的情况下编译的。 .dyn_* 被编译为启用动态链接。