如何编译依赖项以在 cabal 沙箱中进行分析
Posted
技术标签:
【中文标题】如何编译依赖项以在 cabal 沙箱中进行分析【英文标题】:How to compile dependencies for profiling in a cabal sandbox 【发布时间】:2014-09-24 15:03:38 【问题描述】:我正在尝试使用分析选项编译我的一个可执行文件。我在我的 cabal 文件中添加了 -prof
选项。当我这样做时,我会收到一条消息,说
Could not find module ‘Package-X’
Perhaps you haven't installed the profiling libraries for package ‘package-x’?
Use -v to see a list of the files searched for.
我该怎么做?我试过cabal install --only-dependency --reinstall
,得到以下回复:
All the requested packages are already installed:
Use --reinstall if you want to reinstall anyway.
我已经用过--reinstall
了怎么办?我也试过cabal configure --enable-profiling-libraries
等...
【问题讨论】:
this question 能解决您的问题吗? 它有点解决它。cabal install --reinstall world
做了一些事情。但是我仍然无法为我的可执行文件启用分析。如果我在 cabal 文件中添加 -prof
,它会抱怨它不需要。如果我删除它+RTS -p
抱怨二进制文件没有通过分析支持编译...
您是否将library-profiling: True
添加到您的.cabal/config
文件中?这似乎是安装带有分析功能的库的真正诀窍。
不,我没有。我认为cabal configure --enable-library-profiling
会成功。但是,我的问题可能是我使用了不同的沙箱源......我正在尝试重新编译它们
在.cabal/config
文件中将library-profiling
设置为True
可以解决问题。但我不得不删除沙箱 (cabal sandbox delete; cabal sandbox init; cabal sandbox install
)。它重新安装了所有东西(普通+配置库)。我宁愿避免重新安装正常的。
【参考方案1】:
bheklilr 建议的 link 提供了帮助,但没有立竿见影。
我最终在我的.cabal/config
文件中添加了library-profiling: True
并重新安装了所有内容。
cabal install --reinstall wolrd
没用,可能是因为我在沙箱里。然而,好的
关于沙盒的事情是你可以把它们扔掉,所以我重新安装了所有东西
cabal sandbox delete
cabal sandbox init
cabal install
尽管这个解决方案有效,但由于以下原因并不令人满意:
我不得不修改 .cabal/config
这是一个全局文件,而在一个理想的世界
我应该只需要修改我的沙箱。但是,我没有尝试创建本地 cabal 配置文件
我不得不重新安装所有东西,即每个库的分析版本以及已经安装的普通版本。
【讨论】:
根据文档 (haskell.org/cabal/users-guide/…),您可以通过在与您的cabal.sandbox.config
相同的目录中创建一个名为 cabal.config
的文件来设置项目本地配置文件。这应该允许您为您的沙箱设置library-profiling: True
选项。以上是关于如何编译依赖项以在 cabal 沙箱中进行分析的主要内容,如果未能解决你的问题,请参考以下文章
在 ec2 上安装 playwright 依赖项以在 Java 中使用它