这不是编程问题,而是我第一次看到这样的东西。
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
发布于 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*
发布于 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上切换到默认使用共享库时,这个问题将会消失。
发布于 2013-10-30 23:37:01
dd if=/dev/zero of=/swapfile bs=1024 count=2048k mkswap /swapfile swapon /swapfile
https://stackoverflow.com/questions/3144722
复制相似问题