gpt4 book ai didi

haskell - 在 haskell 中使用分析运行堆栈

转载 作者:行者123 更新时间:2023-12-02 21:10:01 24 4
gpt4 key购买 nike

我尝试运行

$ stack build --profile && stack run myexec --rts-options -p

但我明白了

... 
Registering library for mylibrary-0.1.0.1..
Completed 2 action(s).
myexec: the flag -p requires the program to be built with -prof
...

我知道我可以跑

$ .stack-work/dist/x86_64-linux/Cabal-2.4.0.1/build/myexe/myexe +RTS -p

但是stack run有什么意义呢?我不想知道 cabal 的版本和架构等(这一切都发生在 makefile 中)。

最佳答案

您使用的命令 stack run 是一个方便的命令,它不仅运行二进制文件,而且还在此之前构建它。因此,当您运行 stack build --profile 时,它​​会使用所有必要的 ghc 标志来编译二进制文件,但是当您调用 stack run 时,它会再次编译它,但现在没有所有必要的 ghc 标志。分析标志。所以有两种方法可以正确地做到这一点:

  1. 不要运行stack build,因为它是多余的:
$ stack --profile run myexec --rts-options -p
  • 或直接使用 +RTS 标志调用可执行文件,但请确保将 --profile 传递给两个 stack 调用,否则stack exec 将在错误的位置查找二进制文件(即非分析构建),并且无法找到它。
  • $ stack --profile build
    $ stack --profile exec -- myexec +RTS -p

    关于haskell - 在 haskell 中使用分析运行堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924638/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com