首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在eeePc 701 / Ubuntu上网本Remix1.6 (Lucid)上构建cabal-install

如何在eeePc 701 / Ubuntu上网本Remix1.6 (Lucid)上构建cabal-install
EN

Stack Overflow用户
提问于 2010-06-30 05:04:44
回答 3查看 730关注 0票数 5

这不是编程问题,而是我第一次看到这样的东西。

UNR 1.6 (基于Ubuntu 10.04)安装GHC 6.12.1版本。

因此,为了构建cabal- install -0.8.2,我必须安装

libghc6- parsec、mtl、network和zlib包。

然后,在启动‘sh./bootstrap.sh’之后,我得到:

正在检查ghc-6.12.1的已安装程序包...

parsec已经安装,版本正常。

网络已安装,版本正常。

卡巴尔已经安装好了,版本还可以。

mtl已安装且版本正常。

HTTP已安装,且版本正常。

zlib已经安装,版本正常。

第1个编译主程序( Setup.hs,Setup.o )

链接设置...

正在配置cabal-install-0.8.2...

预处理cabal-install-0.8.2...

构建cabal-install-0.8.2...

40个中的1个编译Distribution.Client.BuildReports.Types (分发/客户端/构建报表/类型.hs,dist/build/cabal/cabal-tmp/Distribution/Client/BuildReports/Types.o )

40个中的2个编译Distribution.Client.Utils (发行版/客户端/Utils.hs,dist/build/cabal/cabal-tmp/Distribution/Client/Utils.o )

..。关于未使用addPackageExcludeConstraint和响应的两个警告...

40个中的39个编译Distribution.Client.Install (分发/客户端/安装.hs,dist/build/cabal/cabal-tmp/Distribution/Client/Install.o )

40个编译Main ( Main.hs,dist/build/cabal/cabal-tmp/Main.o )

链接dist/build/cabal/cabal ...

collect2: ld以信号9 Processus arrété终止

cabal-install引导过程中出错:

构建cabal-install包失败

在连接和collect2之间(一分钟左右),我的硬盘驱动器的发光二极管闪烁

就像很多文件被写入或读取一样。

我不知道它是否相关,但以下是依赖项的版本

Cabal-1.8.0.2

HTTP-4000.0.6

mtl-1.1.0.2

network-2.2.1.7

parsec-2.1.0.1

zlib-0.5.2.0

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-02 17:14:56

我也有同样的问题。我随时在ghc-..ebuild中添加splitobjs=NO。然后我重新构建了ghc,但是cabal-install仍然无法通过ld。因为我的gentoo机器没有交换分区。因此,我使用我的2G usb磁盘创建了一个临时交换分区。然后我就可以构建cabal-install成功。我发现它将使用额外的100M交换空间,而我的eeepc有512M内存。所以我认为你可以使用一个超过100M空间的U盘。只需: /dev/sd* swapon /dev/sd*

票数 1
EN

Stack Overflow用户

发布于 2010-06-30 06:36:53

正在发生的情况是,内核正在杀死ld链接器进程,因为它使用了太多的内存。

ld使用这么多内存的原因是一个叫做“拆分对象”的特性,它的结果是像libHSbase.a这样的标准库包含了成千上万个小的.o文件。链接器没有针对这种用例进行优化,最终使用了大量内存。

"split objs“功能旨在通过仅链接实际使用的标准库的位来使编译后的程序更小。它的工作方式是将每个已编译的Haskell模块拆分为每个函数的单独.o文件。

因此,这对于内存较少的系统来说显然是个问题,比如你的上网本。这很可能发生在你链接的任何东西上,不仅仅是cabal。可以在关闭拆分对象功能的情况下从源代码构建ghc。例如,对于RAM为512Mb或更少的机器,Gentoo会自动执行此操作。因此,如果你想在你的上网本上可靠地使用ghc,你可能需要在没有splitobjs的情况下使用build it from source。您可以在功能稍强的机器上构建ghc,然后将其传输到您的上网本上。

将来,当我们在Linux上切换到默认使用共享库时,这个问题将会消失。

票数 7
EN

Stack Overflow用户

发布于 2013-10-30 23:37:01

dd if=/dev/zero of=/swapfile bs=1024 count=2048k mkswap /swapfile swapon /swapfile

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3144722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档