Компиляция GHC 7.2+ в Linux с версией libc <2.7 - PullRequest
6 голосов
/ 08 декабря 2011

Я хочу установить GHC 7.2.2 на сервер Redhat x86_64 (RHEL v5) на работе (в моей учетной записи. У меня нет прав root). Я загрузил общий двоичный файл для Linux x86_64 со страницы загрузки GHC. Но когда я запускаю configure, он выдает исключительную версию glibc для ghc-pwd, поскольку версия glibc в Linux - 2.6. Требуемая версия glibc: 2.7.

Я погуглил, но не нашел никаких предварительно сконфигурированных двоичных файлов GHC для Redhat 5. Я буду признателен за советы о том, как обойти проблему с версией glibc, если кто-нибудь выяснил это для RHEL 5 (или любого другого варианта Linux если обходной путь является общим). В качестве альтернативы, если где-нибудь есть заархивированные двоичные файлы для Redhat x86_64, я могу скачать и распаковать их, если вы укажете мне на них. В противном случае, похоже, что я застрял с GHC 6.12 на работе.

Ответы [ 4 ]

4 голосов
/ 11 апреля 2012

Я собрал ghc 7.4.1 на складе RHEL 5.3, начав с двоичной сборки ghc 6.6 или 6.8 (забудь, какая), которая отлично работала на платформе. Затем я использовал это для сборки ghc 6.12 из исходного кода, а затем использовал 6.12 для сборки 7.4.1 из исходного кода. Пришлось использовать gcc 4.3 для сборки 7.4.1, но это нормально, так как gcc 4.3 доступен на RHEL 5.3.

Это не так много работы, просто достаточно времени для завершения всех сборок.

3 голосов
/ 03 апреля 2014

GHC необходим двоичный файл GHC для компиляции.Доступны предварительно скомпилированные двоичные файлы GHC, но они были созданы для более новых версий glibc

RHEL 5 имеет glibc 2.5, поэтому вы можете использовать GHC 6.8 и начальную загрузку оттуда.Обычно GHC может быть загружен с помощью $ VERSION-2 или новее (точная версия задокументирована с исходными загрузками ).

Вам также понадобится более новая версия gcc.@ alex-iliev предполагает, что достаточно gcc 4.3, который доступен на RHEL 5. Ваш альтернативный вариант - использовать Префикс Gentoo для установки обновленного gcc.

Загрузка и установкапредварительно скомпилированный 6.8 в каталоге:

wget http://www.haskell.org/ghc/dist/6.8.3/ghc-6.8.3-x86_64-unknown-linux.tar.bz2
bunzip2 ghc-6.8.3-x86_64-unknown-linux.tar.bz2 
tar -xf ghc-6.8.3-x86_64-unknown-linux.tar 
cd ghc-6.8.3
mkdir ~/ghc_bootstrap_6_8
./configure --prefix=/home/wilfred/ghc_bootstrap_6_8/
make install

Компиляция 6.12:

wget http://www.haskell.org/ghc/dist/6.12.3/ghc-6.12.3-src.tar.bz2
bunzip2 ghc-6.12.3-src.tar.bz2 
tar -xf ghc-6.12.3-src.tar 
cd ghc-6.12.3
mkdir ~/ghc_bootstrap_6_12
PATH=/home/wilfred/ghc_bootstrap_6_8/bin:$PATH ./configure --prefix=/home/wilfred/ghc_bootstrap_6_12/
make
make install

Компиляция 7.2 и 7.6 - это тот же процесс, что и 6.12.Компиляция может занять несколько часов, так что вы можете захотеть посмотреть быстрые сборки (хотя вам понадобится обычная сборка для окончательной версии GHC).

Если вы действительно прекратите использовать префикс Gentooroot, просто загрузи свой путь к GHC 7.2.Затем вы можете изменить $EPREFIX/usr/portage/eclass/ghc-package.eclass, добавив строку:

PATH=/home/wilfred/ghc_bootstrap_7_2/bin:$PATH

, затем просто добавьте ghcbootstrap к своим USE-флагам и:

emerge --nodeps ghc
3 голосов
/ 08 декабря 2011

У меня была похожая проблема, поэтому я сам собираю ghc. Делать это нетривиально, потому что вам нужны более новые binutils и gcc. Но это можно сделать (все на земле пользователя).

0 голосов
/ 24 февраля 2014

Это ghc 6.8 для компиляции 6.12 из источника

...