Cabal在窗户上安装pcre-light。额外包括dirs / extra-lib-dirs无效

时间:2014-10-09 21:24:58

标签: haskell mingw cabal

我使用的是MinGW + MSYS,

我已经添加了额外的包含dirs,extra-lib-dirs,但似乎没有什么能帮助cabal找到pcre库。以下是我尝试过的一些命令行,以及它下面的一些示例输出。

cabal install pcre-light --extra-include-dirs='C:\Program Files (x86)\GnuWin32\include' --extra-lib-dirs='C:\Program Files (x86)\GnuWin32\lib'
cabal install pcre-light --extra-include-dirs='/C/Program Files (x86)/GnuWin32/include' --extra-lib-dirs='/C/Program Files (x86)/GnuWin32/lib'
cabal install pcre-light --extra-include-dirs="/C/Program Files (x86)/GnuWin32/include" --extra-lib-dirs="/C/Program Files (x86)/GnuWin32/lib"

我不断得到以下几点:

Resolving dependencies...
Notice: installing into a sandbox located at C:\Users\user\src\DBSite\dbsite\.cabal-sandbox
Configuring pcre-light-0.4.0.3...
Failed to install pcre-light-0.4.0.3
Last 10 lines of the build log ( C:\Users\user\src\DBSite\dbsite\.cabal-sandbox\logs\pcre-light-0.4.0.3.log ):
[1 of 1] Compiling Main             ( C:\Users\user\AppData\Local\Temp\pcre-light-0.4.0.3-9072\pcre-light-0.4.0.3\dist\dist-sandbox-6710ae14\setup\setup.hs, C:\Users\user\AppData\Local\Temp\pcre-light-0.4.0.3-9072\pcre-light-0.4.0.3\dist\dist-sandbox-6710ae14\setup\Main.o )
Linking C:\Users\user\AppData\Local\Temp\pcre-light-0.4.0.3-9072\pcre-light-0.4.0.3\dist/dist-sandbox-6710ae14\setup\setup.exe ...
Configuring pcre-light-0.4.0.3...
setup.exe: Missing dependency on a foreign library:
* Missing C library: pcre
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.
cabal.exe: Error: some packages failed to install:
pcre-light-0.4.0.3 failed during the configure step. The exception was:
ExitFailure 1

3 个答案:

答案 0 :(得分:7)

我真的需要回答这个问题,因为我想很多人都会受此影响。请清楚我的系统规格:Windows 7 64位,GHC 7.8.3 64位,cabal 1.20.0.3

可能的失败原因:

1。缺少C库

2.32位库与64位GHC不兼容。

你需要这样做:

1。一个公司airesoft用Microsoft Visual Studio 2008构建了pcre。转到http://www.airesoft.co.uk/pcre下载你想要的pcre或点击http://www.airesoft.co.uk/files/pcre/pcre-8.33.zip下载8.33。 (有人可以将其上传到sourceforge吗?)

2。将文件名pcre3.lib更改为pcre.lib,将pcreposix3.lib更改为pcreposix.lib(我认为实际上不需要此文件,以防万一。)我复制了文件而不是直接重命名,但我认为两种方式都很好

3。根据32位或64位GHC,您需要指定额外的库并包含。 pcre-light需要pcre.h和pcre.lib。在我的机器上,我只是运行

cabal install pcre-light --extra-lib-dirs = E:\\ DOWNLOAD \\ pcre-8.33 \\ lib \\ x64 --extra-include-dirs = E:\\ DOWNLOAD \\ pcre-8.33 \\ inc

如果你的GHC是32位,你只需删除上面命令中的\\ x64

4。当然,您需要将pcre3.dll添加到系统库路径中。我只是将它复制到C:\ Windows \ System32目录。 (我不确定你是否需要将它重命名为pcre.dll,保留以防万一。请确保选择正确的文件,因为32位dll将在64位机器上崩溃,反之亦然)打开你的GHCi你应该是能够导入Text.Regex.PCRE.Light并尝试调用一些函数。

如果可能的话,我会尝试将文件合并到其中的pcre-light包中。 祝你好运

答案 1 :(得分:2)

如果您执行以下操作,现在在Windows上安装pcre-light要容易得多:

  • 安装MSYS2并通过运行pcre(适用于32位Windows)或pacman -S mingw-w64-i686-pcre(适用于64位Windows)安装pacman -S mingw-w64-x86_64-pcre软件包。
  • 确保您拥有GHC 7.10.3或更高版本。 (早期版本捆绑了一个过时的MinGW版本,与MSYS2不兼容。)
  • 请务必使用cabal install pcre-light-0.4.0.4安装pcre-light-0.4.0.4或更高版本。 (早期版本不会自动配置额外的依赖项,这需要您手动设置--extra-lib-dirs--extra-include-dirs标志。)

就是这样!

答案 2 :(得分:0)

我遇到了同样的问题。我下载了Haskell-Platform 32位(编写本文时为7.10版本),并从gnuwin project on sourceforge

解压缩pcre-7.0-lib.zip
cabal install pcre-light --extra-include-dirs=C:\temp\pcre-7.0-lib\include --extra-lib-dirs=C:\temp\pcre-7.0-lib\lib

所以,我做了没有转义反斜杠,我也没有引用字符串。我也没有重命名zipfile中的内容。

我应该提到它是从cmder - shell执行的,它在路径中添加了一些unix工具。使用普通的cmd.exe,我会收到警告,因为需要Cygwin或MinGW / MSYS。