标签: cabal-install

库用户还需要编译库所需的静态.lib吗?

我一直在研究一个Haskell库包,它需要Windows上的自定义.dll和.lib来与某些OS API进行通信..lib与extra-libraries字段链接到库中,DLL安装在cabal包目录中data-files.

出于某种原因(我不是以任何方式链接的专家,但这看起来很奇怪)如果我创建一个使用我的包的测试可执行文件(在build-depends字段中),它想要链接在用于编译的相同的.lib中库 - 即使它只是调用库函数,而不是.lib暴露的任何东西.显然它需要在运行时访问.dll,但这是可以预料的.需要.lib似乎很奇怪.

我希望.lib已经链接到Cabal/GHC为我的库安装时生成的.a文件.这不是这种情况吗?如果是,有人可以解释为什么会这样吗?

dll haskell static-libraries cabal cabal-install

7
推荐指数
1
解决办法
227
查看次数

cabal repl对库与可执行文件的不同行为

cabal repl在库项目中使用时,使用似乎什么都不做,但对可执行项目工作正常.这是我不明白的预期行为吗?

如果我有一个简单的文件

go = putStrLn "test"
Run Code Online (Sandbox Code Playgroud)

并使用cabal init所有默认值(但选择"库"作为类型),然后运行cabal repl只生成一些关于配置和预处理库的文本,并且永远不会进入REPL环境.完全相同的步骤,但选择"可执行"作为类型,使我按预期正确进入GHCi.

直接加载到GHCi时,代码工作正常.

haskell ghc ghci cabal cabal-install

7
推荐指数
1
解决办法
901
查看次数

在Ubuntu 14.04上升级Cabal

当我安装Haskell/GHC + cabal时,sudo apt-get我安装了cabal版本1.16.这显然不是最新版本.我如何升级至至少1.18版?我想这样做sudo apt-get updatesudo apt-get upgrade.

编辑:

此外,当我运行cabal install cabal-install它似乎"安装"版本1.20,但当我运行cabal -V它说cabal 1.16.0

cabal cabal-install ubuntu-14.04

7
推荐指数
1
解决办法
2807
查看次数

Linked Cabal沙箱 - 从`cabal repl`找不到的共享库

我有两个正在开发的软件包,A而且B.套餐B取决于A.

A它是在自己的沙盒中开发的,类似的故事也适用于B:

A> cabal sandbox init
A> cabal install --enable-shared

B> cabal sandbox init
B> cabal sandbox add-source ../A/
B> cabal install
Run Code Online (Sandbox Code Playgroud)

还要注意那shared: True是我的~/.cabal/config.

这里的一切看起来都不错,它们都安装得很好.但是,在工作时B,如果我发出cabal repl,cabal-install告诉我它无法加载libAsomething.so/.dll文件.这里出了什么问题?

这是确切的错误:

...
Loading package mtl-0.0.1 ... linking ... done.
Loading package A-0.0.0 ... <command line>: can't load .so/.DLL for: /home/athan/dev/A/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.3/A-0.0.0/libHSA-0.0.0-ghc7.8.3.so (/home/athan/dev/foo/B/.cabal-sandbox/lib/x86_64-linux-ghc-7.8.3/A-0.0.0/libHSA-0.0.0-ghc7.8.3.so: undefined symbol: AsomethingCrazyInAmodule_closure)
Run Code Online (Sandbox Code Playgroud)

编辑:

我正在使用GHC 7.8.3和cabal-install 1.20.0.3.

haskell shared-libraries cabal cabal-install

7
推荐指数
1
解决办法
252
查看次数

当我尝试安装hlint时,我得到了关于old-time-1.1.0.3的错误

我首先尝试安装Hlint.cabal install hlint但后来我得到了错误:

cabal: Error: some packages failed to install:
cpphs-1.20.2 depends on old-time-1.1.0.3 which failed to install.
haskell-src-exts-1.18.2 depends on old-time-1.1.0.3 which failed to install.
hlint-1.9.37 depends on old-time-1.1.0.3 which failed to install.
old-time-1.1.0.3 failed during the configure step. The exception was:
ExitFailure 77
Run Code Online (Sandbox Code Playgroud)

然后我尝试安装ghc-mod,因为我读到hlint是该包的依赖项(?).认为它可以解决问题.所以我做了cabal install ghc-mod哪个给了我错误.

cabal: Error: some packages failed to install:
cpphs-1.20.2 depends on old-time-1.1.0.3 which failed to install.
ghc-mod-5.6.0.0 depends on old-time-1.1.0.3 which failed to install.
haskell-src-exts-1.17.1 depends on old-time-1.1.0.3 which …
Run Code Online (Sandbox Code Playgroud)

haskell package cabal-install hlint

7
推荐指数
1
解决办法
1627
查看次数

cabal安装hspec时出错

我正在尝试安装hspec,但我得到了这个:

$ cabal install hspec
Resolving dependencies...                                                                                                                                               
cabal: dependencies conflict: ghc-7.2.2 requires containers ==0.4.2.0 however                                                                                           
containers-0.4.2.0 was excluded because ghc-7.2.2 requires containers                                                                                                   
==0.4.1.0                                                  
Run Code Online (Sandbox Code Playgroud)

这甚至意味着什么?

另外,使用ghc 7.2.2,cabal 10.2.

haskell cabal cabal-install

6
推荐指数
1
解决办法
417
查看次数

idris cabal安装失败."重新安装可能会破坏以下软件包"

我首先进行了cabal更新/升级过程,所以我有cabal-install-1.20.0.3.然后我做:

cabal install idris
Run Code Online (Sandbox Code Playgroud)

我明白了:

...
idris-0.9.14.1 (new version)
The following packages are likely to be broken by the reinstalls:
network-2.5.0.0
HTTP-4000.2.17
Use --force-reinstalls if you want to install anyway.
Run Code Online (Sandbox Code Playgroud)

(如果重要,我正在运行OS X 10.9.4)

cabal cabal-install idris

6
推荐指数
1
解决办法
1200
查看次数

Cabal:"只能使用已安装的实例"是什么意思?

我是Cabal的新手,这个短语"只有已安装的实例可以使用"对我没有任何意义.

$ cabal install base==4.7.0.0
Resolving dependencies...
cabal: Could not resolve dependencies:
next goal: base (user goal)
rejecting: base-4.7.0.1 (global constraint requires ==4.7.0.0)
rejecting: base-4.7.0.0 (only already installed instances can be used)
rejecting: base-4.6.0.1/installed-8aa..., 4.6.0.1, 4.6.0.0, 4.5.1.0, 4.5.0.0,
4.4.1.0, 4.4.0.0, 4.3.1.0, 4.3.0.0, 4.2.0.2, 4.2.0.1, 4.2.0.0, 4.1.0.0,
4.0.0.0, 3.0.3.2, 3.0.3.1 (global constraint requires ==4.7.0.0)
Dependency tree exhaustively searched.
Run Code Online (Sandbox Code Playgroud)

Cabal试图在这里沟通的是什么?

cabal cabal-install

6
推荐指数
1
解决办法
1107
查看次数

Cabal 找不到本地来源(但已正确安装)的软件包

我最近升级到 Cabal 3.2(和 GHC 8.10),我遇到了一些重大问题,使我的某些项目不再可构建......

问题的详细描述

这是一个每次都失败的最小(非)工作配置:

  1. 我从一个干净的 Cabal 配置开始(删除~/.cabal);原因将在后面的帖子中出现。我运行cabal update以重新创建.cabal目录并确保 Cabal 正常工作。

  2. test1使用cabal init. 这是一个库项目,带有一个公开的模块(方便地命名Test1),该模块导出一些虚拟函数foo。我跑cabal build,然后cabal install --lib; 一切都运行顺利,到目前为止一切顺利。

  3. 可以肯定的是,我离开了项目目录并启动了 GHCi。我输入:m Test1以加载我之前创建的模块,它工作正常!我可以输入foo ...并查看我的函数执行情况。此外,我列出了目录的内容~/.cabal/store/ghc-8.10.xxx并看到该test1-xxx目录在那里。

  4. 然后我创建了一个新项目test2,仍然使用cabal init. 这一次,我将其配置为可执行文件,并将其添加test1为依赖项(使用build-depends字段)。但是这次当我运行时cabal build,我遇到了一些问题:

~/projects/haskell/test2> cabal build
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: test2-0.1.0.0 (user goal)
[__1] …
Run Code Online (Sandbox Code Playgroud)

haskell cabal cabal-install

6
推荐指数
1
解决办法
1010
查看次数

如何管理阴谋集团沙箱

cabal 的当前文档显示了一个sandbox子命令。

github 上的相应页面不再包含沙箱部分。

我使用的是 cabal 版本 3.2.0.0,但sandbox子命令不存在。使用 cabal 管理沙箱的正确方法是什么?

显然,文档正在进行彻底修改,其中提到了Nix 风格/new-/v2 命令,但菜鸟不清楚使用 cabal 沙箱的规范方式是什么。

haskell cabal cabal-install cabal-sandbox

6
推荐指数
1
解决办法
1161
查看次数