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安装的默认路径。
- Windows下Haskell库的安装
- windows下安装配置Haskell的IDE leksah
- Emacs的haskell-mode的安装
- MAC 10.X 安装Haskell的方法
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- windows下安装opengl的glut库
- Windows下FFTW库的安装
- Windows下FFTW库的安装
- Windows下FFTW库的安装
- windows 下bullet库的安装使用
- Boost库的Windows下安装
- c语言中字符串比较易错的地方
- cocos2d-x初探学习笔记(4)--触屏事件
- Linux Socket编程
- ECHO命令的使用
- java里的日期计算及java与sql server2008的连接
- Windows下Haskell库的安装
- Jquery小记
- effective STL读书笔记
- 最有效地戒掉晚睡强迫症(熬夜强迫症、假象失眠症等等)
- Android自适应屏幕方向和大小
- 数学之美读书笔记(一)
- HDU 1266 Reverse Number (water ver.)
- 如何培养自律能力
- 数学之美读书笔记(二)