gpt4 book ai didi

haskell - 为什么 cabal install 重新编译已构建的内容?

转载 作者:行者123 更新时间:2023-12-04 15:43:45 25 4
gpt4 key购买 nike

为什么当我这样做 cabal build然后 cabal install , cabal 重新编译了两次。
(我正在使用沙箱)。

更新

澄清一下,我问的是什么时候做 cabal build (据我所知编译了我的文件的 2 个版本),为什么要这样做 cabal install再次编译。这不是 build 的目的吗? build ?

更新2

好的,它似乎在两个不同的目录中编译 distdist/sandbox-...两者有什么区别?

> cabal build
Building cache-0.1.0.0...
Preprocessing executable 'cache' for cache-0.1.0.0...
[1 of 1] Compiling Main ( main.hs, dist/build/cache/cache-tmp/Main.o )
Linking dist/build/cache/cache ...

> cabal install
Warning: The package list for 'hackage.haskell.org' is 60 days old.
Run 'cabal update' to get the latest list of available packages.
Resolving dependencies...
Configuring cache-0.1.0.0...
Warning: The 'license-file' field refers to the file 'LICENSE' which does not exist.
Building cache-0.1.0.0...
Preprocessing executable 'cache' for cache-0.1.0.0...
[1 of 1] Compiling Main ( main.hs, dist/dist-sandbox-db136cca/build/cache/cache-tmp/Main.o )
Linking dist/dist-sandbox-db136cca/build/cache/cache ...

最佳答案

cabal build 期间它创建了两个版本的编译代码——一个有分析,一个没有。

命令行参数的差异非常小,很容易被忽略。在下面的输出中,第一个是用 -O -j2 编译的。第二个是用 -O -prof -j2 编译的.输出文件也有不同的后缀 - .o.p_o 相比:

Preprocessing library split-0.2.2...
Building library...
creating dist/build
/usr/bin/ghc --make -fbuilding-cabal-package -O -j2 -static -dynamic-too -dynosuf dyn_o -dynhisuf dyn_hi -outputdir dist/build -odir dist/build -hidir dist/build -stubdir dist/build -i -idist/build -isrc -idist/build/autogen -Idist/build/autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -package-name split-0.2.2 -hide-all-packages -no-user-package-db -package-db /Users/erantapaa/try/split-0.2.2/.cabal-sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d -package-db dist/package.conf.inplace -package-id base-4.7.0.1-df210ede1eb79477fef5662549c32927 -XHaskell2010 Data.List.Split Data.List.Split.Internals -Wall
[1 of 2] Compiling Data.List.Split.Internals ( src/Data/List/Split/Internals.hs, dist/build/Data/List/Split/Internals.o )
[2 of 2] Compiling Data.List.Split ( src/Data/List/Split.hs, dist/build/Data/List/Split.o )
/usr/bin/ghc --make -fbuilding-cabal-package -O -prof -j2 -osuf p_o -hisuf p_hi -outputdir dist/build -odir dist/build -hidir dist/build -stubdir dist/build -i -idist/build -isrc -idist/build/autogen -Idist/build/autogen -Idist/build -optP-include -optPdist/build/autogen/cabal_macros.h -package-name split-0.2.2 -hide-all-packages -no-user-package-db -package-db /Users/erantapaa/try/split-0.2.2/.cabal-sandbox/x86_64-osx-ghc-7.8.3-packages.conf.d -package-db dist/package.conf.inplace -package-id base-4.7.0.1-df210ede1eb79477fef5662549c32927 -XHaskell2010 Data.List.Split Data.List.Split.Internals -Wall
[1 of 2] Compiling Data.List.Split.Internals ( src/Data/List/Split/Internals.hs, dist/build/Data/List/Split/Internals.p_o )
[2 of 2] Compiling Data.List.Split ( src/Data/List/Split.hs, dist/build/Data/List/Split.p_o )
Linking...

关于haskell - 为什么 cabal install 重新编译已构建的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27276321/

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