как я могу создать установку интриги на eeePc 701 / Ремикс Нетбука Ubuntu 1.6 (Ясный)

Не вопрос о программировании, но в первый раз я вижу что-то вроде этого.
UNR 1.6 (на основе Ubuntu 10.04) устанавливает 6.12.1 версий GHC.
Так, для создания cabal-install-0.8.2 я должен установить
libghc6-пакеты парсека, mtl, сети и zlib.
Затем после запуска 'sh./bootstrap.sh', я добираюсь:

Проверка установленных пакетов для ghc-6.12.1...
парсек уже установлен, и версия в порядке.
сеть уже установлена, и версия в порядке.
Интрига уже установлена, и версия в порядке.
mtl уже установлен, и версия в порядке.
HTTP уже установлен, и версия в порядке.
zlib уже установлен, и версия в порядке.
[1 из 1] компиляция основного (Setup.hs, Setup.o)
Соединение установки...
Конфигурирование cabal-install-0.8.2...
Предварительная обработка исполняемых файлов для cabal-install-0.8.2...
Здание cabal-install-0.8.2...
[1 из 40] Компиляция Распределения. Клиент. BuildReports. Типы (Distribution/Client/BuildReports/Types.hs, dist/build/cabal/cabal-tmp/Distribution/Client/BuildReports/Types.o)
[2 из 40] Компиляция Распределения. Клиент. Utils (Distribution/Client/Utils.hs, dist/build/cabal/cabal-tmp/Distribution/Client/Utils.o)

... два предупреждения о не используемый addPackageExcludeConstraint и ответ...

[39 из 40] Компиляция Распределения. Клиент. Установка (Distribution/Client/Install.hs, dist/build/cabal/cabal-tmp/Distribution/Client/Install.o)
[40 из 40] Компиляция Основного (Main.hs, dist/build/cabal/cabal-tmp/Main.o)
Соединение dist/build/cabal/cabal...
collect2: ld завершается с сигналом 9 [Processus arrêté]

Ошибка во время начальной загрузки установки интриги:
Создание пакета установки интриги перестало работать

Между соединением и collect2 (приблизительно одна минута), светодиод моего мерцания жесткого диска
как будто много файлов записано или считано.

Я не знаю, релевантно ли это, но здесь является версиями зависимостей
Интрига 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

5
задан Don Stewart 29 June 2010 в 22:08
поделиться

1 ответ

Ядро убивает процесс компоновщика ld , потому что он использует слишком много памяти.

Причина, по которой ld использует так много памяти, заключается в функции под названием «split objs», которая приводит к тому, что стандартные библиотеки, такие как libHSbase.a , содержат десятки тысяч крошечных маленькие .o файлы. Компоновщик не оптимизирован для этого варианта использования и в конечном итоге использует много памяти.

Функция «split objs» предназначена для уменьшения размера скомпилированных программ за счет связывания только тех битов стандартных библиотек, которые фактически используются. Он работает путем разделения каждого скомпилированного модуля Haskell на отдельный файл .o для каждой функции.

Очевидно, это проблема систем с меньшим объемом памяти, таких как ваш нетбук.Скорее всего, это произойдет с чем угодно, на что вы ссылаетесь, а не только с кликой . Можно собрать ghc из исходного кода с отключенной функцией splitobjs. Например, Gentoo делает это автоматически для машин с 512 МБ ОЗУ или меньше. Так что, если вы хотите надежно использовать ghc на своем нетбуке, вам, вероятно, потребуется собрать его из исходного кода без splitobjs . Вы можете собрать ghc на немного более мощной машине, а затем перенести его на свой нетбук.

В будущем эта проблема исчезнет, ​​когда мы перейдем на использование разделяемых библиотек по умолчанию в Linux.

7
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: