Windows下Haskell库的安装

来源:互联网 发布:方文山黄伟文 知乎 编辑:程序博客网 时间:2024/06/05 06:40

        本文记录了在Windows下安装Haskell(ghc)的经验,Windows版本问W7。


        在Windows下,安装ghc的主程序较为容易,标准的windows程序安装模式。但库的安装较麻烦,它的安装风格则更类似于linux风格,部分库有依赖性,不仅依赖其他Haskell库,也依赖第三方库。有些库不直接支持windows或者在Windows下没有经过良好的安装测试。具体问题具体分析,总是可以解决的,目前我希望安装的库最终都装上了。


基本方式:

        下载后的Haskell库提供安装文件Setup.hs,可以通过如下三个命令实现安装。

runghc Setup.hs configure    -- 配置,类似linux下的configure指令,部分安装包提供configure文件。

runghc Setup.hs build            -- 编译

runghc Setup.hs install          -- 安装,将编译后的代码拷贝到指定位置

如果库依赖一个未安装的库,则会安装失败,并提示需要安装被依赖的库。


Cabal:

        有个工具可辅助安装库,Cabal。可以从官网下载代码通过基本方式安装,也有编译好的exe下载,放入path目录下,就可以运行。它可以根据提供的库的名称,从网上下载代码,解压,依次执行configure、build和install过程。cabal最大的优点是能分析依赖关系,自动下载和安装被依赖的库。下面是比较常用的指令。

cabal update             -- 应该是从网上更新所有库的最新列表。

cabal list xxx              -- 根据xxx查找相关的库,xxx可以是部分名称

cabal install xxx        -- 先安装xxx库,这里的xxx必须是全名


编译问题:

        安装Haskell库,遇到最多的问题是编译问题,

        第一类,库不支持Windows,库使用了linux系统函数,无法在Window下完成编译,这个问题可以使用WinG/MSys解决。

        第二类,库依赖第三方库,部分Haskell库只是其他库的一个封装,如界面库(gtk htk),需要安装例外独立的第三方库,安装后可能还需要配置环境变量等,告知第三方库的位置。

        第三类,路径中的空格,如果你的MinGW或者ghc的安装路径有空格,如在Program File下,则会遇到这个问题。该问题就是在cmd下输入带空格的程序的全路径(路径不被双引号包围)出现的问题。可以修改安装文件,在路径的引用位置加入引号。或者可以多尝试几个安装方式,在cmd下使用基本方式和cabal方式,可以在MSys中使用基本方式和cabal方式,也可以在MSys中使用configure、make等原始指令或者原始指令和runghc Setup.hs交替使用。


安装路径:

        有两个位置需要关注:库安装的位置和记录库安装位置的位置。ghc根据后者知道哪些库安装了,在何处加载它们。如果前者被删除,后者没有相应删除,则ghc依然认为库安装了,但加载失败。

        ghc程序自带库的二者的位置为:“ghc安装路径\lib”和“ghc安装路径\lib\package.conf.d”。而后安装的库的位置,前者可以通过下面的命令安装在“xxx”路径下,

runghc Setup.hs configure --prefix="xxx"

cabal install xxx --prefix="xxx"

后者可以在系统盘中搜索“package.conf.d”目录来确定。


        此外,cabal运行会生产一些数据如下载安装包等,在系统盘中搜索“cabal”目录可以找到数据存放位置,其中在config中可以修改cabal安装的默认路径。


原创粉丝点击