如何在 eeePc 701 / Ubuntu Netbook Remix 1.6 (Lucid) 上构建 cabal-install

2024-01-01

不是编程问题,但我第一次看到这样的问题。
UNR 1.6(基于Ubuntu 10.04)安装6.12.1版本的GHC。
所以,为了构建 cabal-install-0.8.2,我必须安装
libghc6-parsec、mtl、network 和 zlib 的软件包。
然后,启动“sh ./bootstrap.sh”后,我得到:

检查已安装的 ghc-6.12.1 软件包...
parsec已经安装并且版本没问题。
网络已经安装并且版本没问题。
Cabal已经安装好并且版本没问题。
mtl已经安装并且版本没问题。
HTTP已经安装并且版本没问题。
zlib已经安装并且版本没问题。
[1 of 1] 编译主程序(Setup.hs、Setup.o)
链接设置...
配置 cabal-install-0.8.2...
预处理 cabal-install-0.8.2 的可执行文件...
构建 cabal-install-0.8.2...
[ 1 of 40] 编译 Distribution.Client.BuildReports.Types ( Distribution/Client/BuildReports/Types.hs, dist/build/cabal/cabal-tmp/Distribution/Client/BuildReports/Types.o )
[ 2 of 40] 编译 Distribution.Client.Utils ( Distribution/Client/Utils.hs, dist/build/cabal/cabal-tmp/Distribution/Client/Utils.o )

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

[39 of 40] 编译 Distribution.Client.Install ( Distribution/Client/Install.hs, dist/build/cabal/cabal-tmp/Distribution/Client/Install.o )
[40 of 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 包失败

在连接和收集 2 之间(一分钟左右),我的硬盘驱动器的 LED 闪烁
就好像写入或读取了很多文件。

我不知道它是否相关,但这是依赖项的版本
Cabal-1.8.0.2
HTTP-4000.0.6
mtl-1.1.0.2
网络-2.2.1.7
秒差距-2.1.0.1
zlib-0.5.2.0


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

原因ld使用如此多的内存是因为一个名为“split objs”的功能,其结果是标准库喜欢libHSbase.a包含数十个数千个微小的.o文件。链接器未针对此用例进行优化,最终会使用大量内存。

“split objs”功能旨在通过仅链接实际使用的标准库的位来使编译后的程序变得更小。它的工作原理是将每个编译的 Haskell 模块分割成一个单独的.o每个函数的文件。

因此,对于内存较少的系统(例如上网本)来说,这显然是一个问题。您链接的任何内容都可能会发生这种情况,而不仅仅是cabal。可以在关闭 splitobjs 功能的情况下从源代码构建 ghc。例如,Gentoo 对于 RAM 为 512Mb 或更少的机器自动执行此操作。因此,如果您想在上网本上可靠地使用 ghc,您可能需要从源代码构建它 http://hackage.haskell.org/trac/ghc/wiki/Building/Hacking没有分割对象 http://hackage.haskell.org/trac/ghc/wiki/Building/Using#Commonbuild.mkoptions。您可以在功能稍微强大的机器上构建 ghc,然后将其传输到您的上网本。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 eeePc 701 / Ubuntu Netbook Remix 1.6 (Lucid) 上构建 cabal-install 的相关文章

随机推荐

  • 如何使用 .NET 代码从 Windows Phone Marketplace 获取我的应用程序的深层链接?

    如何以编程方式从 Windows Phone Marketplace 获取应用程序的深层链接 以便可以在代码中使用它 获取 AppDeeplink 非常有用 例如在 ShareStatusTask 和 ShareLinkTask 中 这是可
  • 将 XDocument 绑定到 WPF 并仍然使用 XPath?

    这是一个由 2 部分组成的问题 1 是否可以在不使用 ObjectDataProvider 的情况下将 XDocument 绑定到 WPF 控件 这是我的代码片段 其中 XmlDocument 可以工作 但我无法使用 XDocument X
  • 使用不同中间件的 Compojure 路由

    我目前正在使用 Compojure 以及 Ring 和相关中间件 在 Clojure 中编写 API 我正在尝试根据路线应用不同的身份验证代码 考虑以下代码 defroutes public routes GET public endpoi
  • 地球上所有 MimeType 的列表,映射到文件扩展名? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有列出现有所有 mimeType 的资源 我发现了一些地方的 mimeTypes 少于 1000 个
  • 使用 React hooks 防止 React 重新渲染 D3 图表

    我一直分别使用 React 和 D3 现在有一个项目 我需要对应用程序的绘图功能进行低级别控制 基本上 当用户放大绘图时 我需要能够从数据库中获取更高分辨率的数据 反之亦然 我找到了一些结合使用 D3 和 React 的方法 我想尝试让我的
  • ByRef 参数类型不匹配”错误 VB6

    我是 VB6 和 spread 的新手 我的 VB 项目正在使用 spread 在进行 spread 初始化的表单中 VB 6 会抛出一个编译错误 By Ref Argument Type Mismatch 错误 是否是因为 spread问
  • 在python中查找对某个对象的所有引用

    在 python 中查找对象的所有引用的好方法是什么 我问的原因是看起来我们有 内存泄漏 我们正在从网络浏览器将图像文件上传到服务器 每次执行此操作时 服务器上的内存使用量都会与刚刚上传的文件的大小成比例地增加 该内存永远不会被 pytho
  • C# process.start,如何知道进程是否结束?

    在 C 中 我可以使用以下命令启动一个进程 进程 启动 程序 exe 如何判断程序是否仍在运行 或者是否已关闭 MSDN 系统 诊断 流程 http msdn microsoft com en us library system diagn
  • 在验证 w3c 的 facebook 元标记中没有属性“property”

    我们可以使用meta name fb admins 代替meta property fb admins 用于 w3c 验证 我正在回答这个问题 尽管这是一个老问题 因为我认为这对于将来想要获得这方面信息的人来说是有价值的 当埃文说它不会通过
  • Yii2 - 制作超链接以在语言之间切换

    Hello 在 Yii1 1 中 我可以在 siteController 中执行操作 然后使用 Yii app gt controller gt createUrl actionname array language gt new lang
  • Fedora OpenJDK 设置 JAVA_HOME

    我正在使用 Fedora 实际上是 Pidora 因为我试图在树莓派集群上设置 hadoop 我使用 ansible 在所有节点上安装了 oopenjdk 但是 当我尝试设置 JAVA HOME 环境变量时 我对以下文件夹感到非常困惑 us
  • C 函数名还是函数指针? [复制]

    这个问题在这里已经有答案了 我们来看看这段代码 include
  • 路径相关类型是类型投影吗?

    我现在正在深入阅读Scala 以下是这本书的摘录 所有路径相关类型都是类型投影 路径依赖型foo Bar被重写 作为foo type Bar由编译器 在 Scala 中 所有类型引用都可以编写为针对命名实体的项目 类型 scala Stri
  • React 功能组件:如何使用 componentDidMount() [重复]

    这个问题在这里已经有答案了 我有一个函数 从技术上讲 它是一个 React 函数组件 export default function Daw return lt gt div Hello world div gt 当然 我的普通函数不能有R
  • 如何将用纯 python 动态创建的按钮添加到用 Kivy 语言编写的 kivy 布局中?

    我的问题是 我需要基于可变数量的网格方块创建按钮网格 并将它们放置在网格布局上 并使用屏幕管理器将它们显示在屏幕上 我知道如何使用简单的 for 循环在纯 python 中执行此操作 但是我用 kivy 语言编写了程序的布局 并且我不知道如
  • 关于http劫持和keep-alive

    i use resp err http Get http example com 得到一个http Response 我想准确地写入http处理程序 但只有http ResponseWriter 所以我劫持了它 webConn webBuf
  • R ggplot直方图条形按降序排列

    我不知道如何使用 ggplot 使直方图的条形按降序显示 这是我的代码 其中包含每个人都可以使用的数据框 library ggplot2 library scales chol lt read table url http assets d
  • 从 ajax post 在 django 视图中创建多个对象

    我有以下模型 对象 C 被对象 B 包含 被对象 A 包含 我在模板中有一个动态表单 并使用 jQuery 函数 我可以向该表单动态添加多个字段 每组字段代表对象 B 或 C 当通过后期操作提交时 我想创建我的对象树 我的目标是在验证此模板
  • 如何使用 telegram bot api 在群聊中接收消息

    我的电报机器人在私人聊天中接收用户发送到我的机器人的消息 但不接收用户在群聊中发送的消息 任何用于获取群聊消息的选项 api Talk to botfather http telegram me botfather并禁用隐私模式
  • 如何在 eeePc 701 / Ubuntu Netbook Remix 1.6 (Lucid) 上构建 cabal-install

    不是编程问题 但我第一次看到这样的问题 UNR 1 6 基于Ubuntu 10 04 安装6 12 1版本的GHC 所以 为了构建 cabal install 0 8 2 我必须安装libghc6 parsec mtl network 和