如何解决如何在不安装的情况下编译haskell包?
https://github.com/koalaman/shellcheck
我可以使用 cabal install
安装上述软件包。但我想运行原始 ghc
命令,无需安装即可编译二进制文件。
有人能告诉我怎么做吗?
解决方法
首先,您需要安装所有依赖项,您可以使用 cabal install --dependencies-only
来完成。然后你需要创建一个包含内容的文件 Paths_ShellCheck.hs
:
module Paths_ShellCheck where
import Data.Version
version = Version [0,7,2] []
然后就可以使用这个GHC命令了:
ghc \
--make \
-O \
-package-db ~/.cabal/store/ghc-8.10.4/package.db \
-hide-all-packages \
-package regex-tdfa \
-package parsec \
-package containers \
-package base \
-package deepseq \
-package mtl \
-package QuickCheck \
-package array \
-package aeson \
-package bytestring \
-package Diff \
-package filepath \
-package directory \
src/ShellCheck/*.hs \
src/ShellCheck/*/*.hs \
Paths_ShellCheck.hs \
shellcheck.hs
这将构建可执行文件 shellcheck
。请注意,这是专门针对 GHC 8.10.4 的,如果您想使用其他 GHC 版本,可以更改它。
如果您甚至不想运行 cabal install --dependencies-only
那么最简单的方法可能是复制所有依赖项的所有 *.hs 源文件,将它们添加到最后的 globs 中,并删除相应的-package ...
参数。您或许可以保留与 GHC 捆绑的包:即 base、deepseq、mtl、容器、数组、字节串、文件路径、解析和目录。这样就剩下 Diff、aeson、QuickCheck 和 regex-tdfa 及其传递依赖项了。
这是通常的方式。第一步是获取代码的副本。这两个中的一个可以做到:
% git clone https://github.com/koalaman/shellcheck
% cabal unpack shellcheck
进入包含代码的目录后,您可以使用 cabal
命令而不是 build
命令要求 install
构建它而不安装它。
% cabal build
如果您想查看 cabal
为此任务调用的子命令序列,您可以通过增加详细程度来要求它显示它们。
% cabal build -v3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。