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

2024-01-04

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

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

那么 p_hi 和 dyn_hi 是沙袋吗?


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 纯 Haskell 代码需要线程池吗?

    In 现实世界 Haskell 第 28 章 软件事务内存 http book realworldhaskell org read software transactional memory html 开发了一个并发网络链接检查器 它获取网
  • 为什么在 where 子句中使用类型签名如此罕见?

    它是否有助于编译器优化 或者只是添加额外类型签名的多余工作 例如 人们经常看到 foo a gt b foo x bar x where bar x undefined 而不是 foo a gt b foo x bar x where ba
  • Haskell 项目可以使用 cmake 吗?

    我正在计划一个用 Haskell 编写的项目 也许也有一些部分是用 C 编写的 对于构建系统 我决定不选择 Haskell 程序 cabal 的常见选择 主要是因为我想了解其他语言的构建程序是如何工作的 我听说过 CMake 我认为这是一个
  • 使用带有两个列表而不是一个列表的地图。可以筑巢吗?

    我需要多次运行一个带有两个参数的函数 我有两个包含这些参数的列表 我希望能够使用map或类似的东西用相应的参数调用函数 我要调用的函数具有以下类型 runParseTest String gt String gt IO 列表的创建方式如下
  • 函数式语言中的部分求值和函数内联有什么区别?

    我知道 函数内联就是用函数定义代替函数调用 部分评估是在编译时评估程序的已知 静态 部分 在 C 等命令式语言中 两者之间存在区别 其中运算符与函数不同 但是 在像 Haskell 这样的函数式语言 其中运算符也是函数 中 两者之间有什么区
  • Parsec.Expr 具有不同优先级的重复前缀

    Parsec Expr buildExpressionParser 的文档说 相同优先级的前缀和后缀运算符只能出现一次 即 如果 为前缀否定 则不允许使用 2 但是 我想解析这样的字符串 具体来说 考虑以下语法 sentence ident
  • 在 Haskell 中将字符串转换为整数/浮点数?

    data GroceryItem CartItem ItemName Price Quantity StockItem ItemName Price Quantity makeGroceryItem String gt Float gt I
  • cabal install wx 缺少 C 库

    Env 操作系统 feodra 16 Haskell 平台 wxGTK 开发 GHHC 7 0 4 我正在尝试安装 wxHaskell 阴谋集团安装wx 然后给出这些错误 缺少对外国库的依赖 缺少 C 库 wx baseu 2 8 wx b
  • Haskell 中的所有内容都存储在 thunk 中吗,甚至是简单的值?

    以下值 表达式 函数的 thunk 在 Haskell 堆中是什么样子的 val 5 is val a pointer to a box containing 5 add x y x y result add 2 val main prin
  • 管道 - 将多个来源/生产者合并为一个

    我正在使用读取文件sourceFile 但我还需要在处理操作中引入随机性 我认为最好的方法是拥有一个这样的制片人 Producer m StdGen ByteString 其中 StdGen 用于生成随机数 我打算让生产者执行 source
  • 由于垃圾收集,Haskell 程序中会出现多长时间的暂停?

    关于我的另一个问题Haskell 集合可以保证每个操作的最坏情况范围 https stackoverflow com q 12393104 1333025 我很好奇 垃圾收集会导致多长时间的暂停 Haskell 是否使用某种增量垃圾收集 以
  • Haskell / cabal 包的解决方法受到 Nix 和 Cabal 的限制?

    我最近开始开发反射平台 https github com reflex frp reflex platform 有一些额外的配置类似于优秀的反射项目骨架 https github com ElvishJerricco reflex proj
  • 使用 Parsec 解析正则表达式

    我正在尝试通过实现一个小型正则表达式解析器来学习秒差距 在 BNF 中 我的语法类似于 EXP EXP LIT EXP LIT 我尝试在 Haskell 中实现这一点 expr try star lt gt try litE lt gt l
  • 并行 Haskell - GHC GC 火花

    我有一个正在尝试并行化的程序 带有可运行代码的完整粘贴here http lpaste net 101528 我进行了分析 发现大部分时间都花在findNearest这本质上是一个简单的foldr超过一个大Data Map findNear
  • Haskell数据类型转换问题

    我目前正在学习 Haskell 并且一直在编写一些非常简单的程序来练习 我的程序之一是 import System IO main do putStrLn Give me year y lt getLine let res show cal
  • Haskell Cabal:“包间接依赖于同一包的多个版本”

    清除我的所有后cabal installed 包 我运行了以下会话 cabal update Downloading the latest package list from hackage haskell org james bast c
  • Cabal:使用源代码构建目录

    我有一个src目录 在这个目录中我有Main hs文件和Test目录 在里面Test我有的目录Test hs模块 我需要用 cabal 来编译它 在我的阴谋集团文件中 我有 Executable main hs or lhs file co
  • 告诉阴谋集团主模块在哪里

    我有一个具有以下结构的项目 foo cabal src Foo Main hs foo cabal 的一部分如下所示 executable foo main is Foo Main hs hs source dirs src Main hs
  • Haskell 有 takeUntil 函数吗?

    目前我正在使用 takeWhile x gt x 1 x 89 l 从列表中获取最多为 1 或 89 的元素 但是 结果不包括这些标记值 Haskell 是否有一个标准函数可以提供这种变化takeWhile结果中包含哨兵 到目前为止 我对胡
  • 非单射封闭型族

    我确实有一段人为设计的代码 LANGUAGE DataKinds TypeFamilies data Foo Foo type family Id n Foo a where Id Foo a a data Bar n Foo Bar cl

随机推荐

  • URL 重写 PHP $_GET 变量

    嘿 我正在寻找一个 htaccess 重写文件来更改 newProject index php start 2 to newProject page 2 我该怎么办 谢谢 我认为你的问题是倒退的 特别是如果你正在寻找更干净的网址 Rewri
  • 使用 oledb 命令从存储过程检索输出参数 vb.net

    我的存储过程 PROCEDURE dbo addMasterTransaksi kodeSuplier varchar 10 Total money kodeUser varchar 10 isLunas varchar 2 Dp mone
  • rep 的文档是否告诉我们它是一个内部通用函数?

    因为它已开启内部通用函数列表 https stat ethz ch R manual R patched library base html InternalMethods html 我知道rep是一个内部通用函数 这个事实是否仅通过阅读就
  • AngularJS 中具有嵌套状态的嵌套视图

    我正在尝试创建嵌套状态 但出了点问题 我不明白为什么 我的角度应用程序中有这些状态 client list clients client id show client client new new client 现在 我正在尝试做 clie
  • 如何删除C++中类的所有隐式(默认)方法?

    C 编译器在一定条件下为类添加隐式默认构造函数 复制构造函数 析构函数 转换运算符 赋值运算符等以及其他隐式方法 如何以最短的方式禁用 删除所有可能的隐式方法 我不希望我的类不可复制 我只想禁用这些默认方法 以便编译器抛出编译错误 然后我自
  • Express 3.x 和 socket.io 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一个很好的入门教程 使用 Express 3 x 将 socket io 和express 结合
  • 在 iOS 模拟器上显示 GMSMarkers 时出现 GMSThreadException

    我正在开发一个应用程序来在 GMSMapView 上显示大约 200 个 GMSMarkers 我尝试了两种显示标记的方法 方法1有点慢 但没有出现错误 但是方法2在真机上运行顺利 但在iOS模拟器上测试时出现GMSThreadExcept
  • 使用 vim 读取 gnu-screen 日志

    最近我发现了一个很棒的终端多路复用工具 称为 gnu screen 我对它完全满意 但我遇到了一个我想改进的不便之处 C a H 命令使屏幕将所有内容记录到名为 screenlog 的日志文件中 但以一种奇怪的方式对控制字符进行编码 例如
  • 如何检查地址是否在 Google Maps API 上的区域内

    我有一个地址字符串 例如 12 Swiss Ave 冈维尔 旺加努伊 新西兰 给定这个地址 我需要确定该地址是在新西兰的北岛还是南岛内 如果我将地址传递给谷歌地图 API 我得到的数据如下 不幸的是 它没有告诉我它在哪个岛 那么 我该如何检
  • 有向图和无向图有什么区别

    这些基本类型之间有什么区别 在附图中我看到有向有箭头 但是有向图中的这些箭头以及无向图中没有箭头到底意味着什么 它的意思正是它听起来的样子 在有向图中 方向很重要 即边 2 gt 3 表示边是有向的 只有从 2 到 3 的边 没有从 3 到
  • 在matlab中将GML文件转换为邻接矩阵

    我有一个GML http en wikipedia org wiki Graph Modelling Language有向图文件 政治博客 http www personal umich edu mejn netdata polblogs
  • 结合 grid.arrange 删除两个 ggplot 之间的所有空间

    我想粘贴两个图 主题之间没有任何空间 因此它们共享一个轴 Given p1 lt qplot 1 1 xlab p1 lt p1 theme legend position none axis text x element blank ax
  • struts 2 在调用堆栈中找不到名称为[excelStream]的java.io.InputStream

    excelStream我正在尝试下载 Excel 文件 在我的动作课上 public class ActivityTrackerExlReportAction extends BaseAction private InputStream e
  • 如何在 fop 生成的 pdf 中显示预先格式化的文本?

    有谁知道如何显示预格式化的 html 文本 例如 ol li item 1 li li item 2 li li item 3 li ol 在用 fop 生成的 pdf 中 Thanks 这个 XSLT 1 0
  • MFC:CFormView 派生类的 OnInitialUpdate 函数

    我的 CFormView 派生类的结构如下 class FormViewClass public CFormView FormViewClass void Initialize virtual void OnInitialUpdate 理想
  • 了解开关条件下的寄存器用法

    我有一个 C 语言的开关条件代码和汇编代码 但对我来说设置什么似乎非常随意 edx或eax或ecx 如何区分 edx epx ecx ebp 之间的区别 就连教科书也没有给我足够的解释 include
  • 作为启动 RDP 程序运行时如何停止初始表单最大化?

    当主机和客户端都是 XP Pro 计算机时 在终端服务 远程桌面 会话中启动时 我的 VB6 应用程序中的启动表单表现得很奇怪 该表单本来是要居中的 但实际上它最大化了 并且其内容位于左上角 看起来很奇怪 请注意 只有当应用程序路径用于 R
  • 在 VTable 上下文中,虚拟方法调用和直接方法调用有什么区别?

    在 VTable 上下文中 虚拟方法调用和直接方法调用有什么区别 在虚拟和直接调用的情况下如何解决方法引用 理论上 不存在这样的东西 C 标准没有定义它 定义了虚拟调用 但没有指定它们必须如何工作 不存在像VTable这样的东西 在实践中
  • 计算 R 中矩阵的成对差异数

    我有以下矩阵 0 1 0 0 0 1 0 0 Row A 0 1 0 0 0 0 1 0 Row B 0 1 0 0 0 0 0 0 Row C 0 0 1 0 0 0 0 0 Row D 我想制作一个新的矩阵 显示每行之间的成对差异 例如
  • GHC生成的.hi、.p_hi和.dyn_hi文件有什么区别

    我正在尝试减少包含 Nix 派生的存档的大小 我注意到每个模块都有 3 个文件 hi p hi 和 dyn hi 大小都相似 ghc 提示 解释器只需要 hi 如果我删除其余变量 则什么也不会发生 那么 p hi 和 dyn hi 是沙袋吗