免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8592 | 回复: 16
打印 上一主题 下一主题

今天我学会了 cabal 怎么用 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-05 22:51 |只看该作者 |倒序浏览
发信人: flw (没有“昵”称), 信区: FuncProgram
标  题: 今天俺学会了 cabal 怎么用。
发信站: 水木社区 (Thu Mar  5 21:26:20 2009), 站内

以前都是上 Hackage 找模块,手工下载,然后用:

    runhaskell Setup configure
    runhaskell Setup build
    sudo runhaskell Setup install

觉得挺不方便的,经常看到网页上提到 cabal 这个包管理工具,
但是一直都不知道怎么用,windows 上和 debian 上都没有这个命令,
但是看 GHC 的文档里面,确实是有 Cabal 这个模块的,
一直都搞不太明白,也没认真去搞。

今天花了点时间了解了一下 http://www.haskell.org/cabal/
原来真的很方便啊!

原来 cabal 命令需要到
http://www.haskell.org/cabal/download.html
单独下载才行(搞不懂为什么不包含到标准的 GHC 发布里去)
windows 上的话,下载
http://www.haskell.org/cabal/rel ... all-0.6.2/cabal.exe
就可以了,然后:

更新 package list
cabal update

查看 package list
cabal list | less

安装 package(以 wxHaskell 为例):
cabal list | grep wx
cabal install wx
(会自动处理依赖关系)
(不太爽的一点是 install 的 package name
和 import 的 Module.Name 经常不一样,这点不如 CPAN)

论坛徽章:
0
2 [报告]
发表于 2009-03-12 10:01 |只看该作者
cabal 将模块安装到了哪里??win下是安装到了c:\program files\haskell,我觉得应该安装到ghc的目录下吧,我已经改了cabal的config文件了,将4个地方都改了!!

ubuntu下是安装到了当前用户的.cabal下了,请问怎么修改呢??还是不用修改呢??

Ubuntu下我装了个ArrayRef的模块,但是import之后编译出错了!!

先谢谢flw

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2009-03-12 10:14 |只看该作者
原帖由 ihere 于 2009-3-12 10:01 发表

ubuntu下是安装到了当前用户的.cabal下了,请问怎么修改呢??还是不用修改呢??

干嘛要修改?

Ubuntu下我装了个ArrayRef的模块,但是import之后编译出错了!!

怎么编译的?出的什么错?

论坛徽章:
0
4 [报告]
发表于 2009-03-12 11:14 |只看该作者
ubuntu下不用修改,那是不是同理win下编译到C:\program files\haskell也不用修改???

编译报错的信息是:
compilation IS NOT required
test2.o: In function `sEh_info':
(.text+0x8b9): undefined reference to `__stginit_ArrayRefzm0zi1zi3_DataziRef_'
collect2: ld 返回 1

我在代码里引用了:
import Data.Ref

论坛徽章:
0
5 [报告]
发表于 2009-03-12 11:15 |只看该作者
编译命令行就是:

ghc -o test test.hs

论坛徽章:
0
6 [报告]
发表于 2009-03-12 11:18 |只看该作者
也谢谢大法师

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2009-03-12 12:07 |只看该作者
原帖由 ihere 于 2009-3-12 11:14 发表
ubuntu下不用修改,那是不是同理win下编译到C:\program files\haskell也不用修改???

关键是,你为什么要修改?
编译报错的信息是:
compilation IS NOT required
test2.o: In function `sEh_info':
(.text+0x8b9): undefined reference to `__stginit_ArrayRefzm0zi1zi3_DataziRef_'
collect2: ld 返回 1

我在代码里引用了:
import Data.Ref

引用你安装在自己主目录下的其他模块有问题么?是不是把这个模块装到系统目录下就没有问题了呢?

[ 本帖最后由 MMMIX 于 2009-3-12 12:10 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2009-03-12 12:15 |只看该作者

看来我比楼主要聪明一些。
我看到这个现象以后,也有点不爽,不过我犹豫了一下,没改。

论坛徽章:
0
9 [报告]
发表于 2009-03-12 12:47 |只看该作者
之所以修改路径确实是觉得不爽,尤其是win下

引用自带的模块没问题,因为这个例子不光是用了ArrayRef一模块

论坛徽章:
0
10 [报告]
发表于 2009-03-12 12:51 |只看该作者
to flw,你确实是坏人,你觉得不爽应该下大力气解决这个问题,并附带着在这个帖子里写上办法,恩恩!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP