русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Установка пакета Glibc


Дата добавления: 2014-11-28; просмотров: 1310; Нарушение авторских прав


Замечание Для некоторых пакетов, не входящих в состав LFS, предлагается устанавливать библиотеку GNU libiconv с тем, чтобы можно преобразовывать данные из одной кодировки в другую. На главной странице проекта (http://www.gnu.org/software/libiconv/) указывается: "Данная библиотека предоставляет собой реализацию iconv(), предназначенную для использования в системах, в которых такой библиотеки нет, либо в которых такая библиотека не может осуществлять преобразование в кодировку и из кодировки Unicode". В Glibc предлагается реализация iconv()и можно преобразовывать данные вв кодировку и из кодировки Unicode, поэтому в системе LFS библиотека libiconv не требуется.

Система сборки пакета Glibc является самодостаточной и пакет будет прекрасно установлен даже в случае, если файл спецификаций компилятора и компоновщик по-прежнему указывают на директорий /tools. Спецификации и компоновщик не следует менять до установки пакета Glibc, поскольку не пройдут тесты Glibc autoconf и в результате не удастся получить чистую сборку пакета.

Когда запускается команда make install, скрипт, который называется test-installation.pl, выполнит небольшой тест проверки чистоты установки для нашей только что установленной библиотеки Glibc. Однако, поскольку наш набор инструментальных средств по-прежнему указывает на директорий test-installation.pl, этот тест будет выполняться над не той библиотекой Glibc. Мы можем заставить скрипт проверять библиотеку Glibc, которую мы только что установили, следующим образом:

DL=$(readelf -l /bin/sh | sed -n 's@.*interpret.*/tools\(.*\)]$@\1@p')sed -i "s|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=$DL -o|" \ scripts/test-installation.plunset DL

Кроме того, в скрипте test-installation.pl есть ошибка, в результате которой делается попытка скомпоновать тестовую программу с библиотекой, которая не установлена с помощью команды make install. Выполните следующую команду sed для того, чтобы это исправить:



sed -i -e 's/"db1"/& \&\& $name ne "nss_test1"/' scripts/test-installation.pl

В скрипте ldd, исполняемом в командной оболочке, используется синтаксис, специфичный для Bash. В случае, если установлен другой интерпретатор, например, /bin/sh, измените программу интерпретатора, используемого по умолчанию, на /bin/bash так, как это писано в главе Shells (Командные оболочки) в книге BLFS:

sed -i 's|@BASH@|/bin/bash|' elf/ldd.bash.in

Исправьте ошибку, которая не позволяется делать сборку пакета Glibc с помощью компилятора GCC-4.5.2:

patch -Np1 -i ../glibc-2.13-gcc_fix-1.patch

Исправьте ошибку разбалансировки стека, которая возникает при некоторых обстоятельствах:

sed -i '195,213 s/PRIVATE_FUTEX/FUTEX_CLOCK_REALTIME/' \nptl/sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timed{rd,wr}lock.S

Документация по Glibc рекомендует собирать пакет Glibc в отдельном директории, предназначенном для сборки, а не в директории с исходными кодами:

mkdir -v ../glibc-buildcd ../glibc-build

Как и в главе 5, для машин с архитектурой x86 добавьте в переменную CFLAGS флаги, необходимые для компилятора. Здесь также для компилятора gcc указываются режимы оптимизации библиотеки, повышающие скорость компиляции (-pipe) и увеличивающие производительность пакета (-O3).

case `uname -m` in i?86) echo "CFLAGS += -march=i486 -mtune=native -O3 -pipe" > configparms ;;esac

Подготовьте пакет Glibc для компиляции:

../glibc-2.13/configure --prefix=/usr \ --disable-profile --enable-add-ons \ --enable-kernel=2.6.22.5 --libexecdir=/usr/lib/glibc

Пояснение новых конфигурационных параметров:

--libexecdir=/usr/lib/glibc
  Этот параметр изменяет месторасположение команды pt_chown с используемого по умолчанию директория /usr/libexec на директорий /usr/lib/glibc.

Откомпилируйте пакет:

make
Важно В этом разделе выполнение набора тестов для Glibc считается важным. Не пропускайте его ни при каких обстоятельствах.

Перед запуском тестов, скопируйте файл из дерева исходных кодов в дерево нашей сборки с тем, чтобы предотвратить ряд неудачных запусков тестов, затем проверьте результаты:

cp -v ../glibc-2.13/iconvdata/gconv-modules iconvdatamake -k check 2>&1 | tee glibc-check-loggrep Error glibc-check-log

Вы, вероятно, увидите ожидаемый (игнорируемый) отказ теста posix/annexc. Кроме того, тестовый набор для Glibc в некоторой степени зависит от хост системы. Ниже приведен список наиболее часто встречающихся вопросов:

  • Иногда тесты nptl/tst-clock2, nptl/tst-attr3 и rt/tst-cpuclock2 не проходят. Причина не совсем понятна, но есть признаки того, что проблемы с тестами могут быть вызваны малым временем исполнения.
  • Математические тесты иногда также не проходят, когда они выполняются в системах, где процессор не является сравнительно новым фирменным Intel или соответствующим подлинным процессором AMD.
  • Если вы смонтировали раздел LFS с параметром noatime, тест atime проходить не будет. Как уже упоминалось в разделе 2.4 "Монтирование нового раздела", не используйте параметр noatime, когда собираете систему LFS.
  • Будучи запущенными на старом или и медленном оборудовании или в системе, которая находится под нагрузкой, некоторые тесты могут не проходить из-за того, что превышены таймауты. Измените команду make check и установите такое значение для TIMEOUTFACTOR, которое поможет устранить эти ошибки (например, TIMEOUTFACTOR=16 make -k check).

На стадии установки пакет Glibc будет жаловаться на отсутствие файла /etc/ld.so.conf. Это сообщение безвредное; предотвратить его появление можно следующим образом:

touch /etc/ld.so.conf

Установите пакет:

make install

Указанная выше команда не устанавливает локали, из-за которых ответы системы могут выдаваться на другом языке. Ни одна из локалей не требуется, но если некоторые из них отсутствует, в наборах тестов пакетов, которые будут устанавливаться в будущем, некоторые тестовые случаи могут быть пропущены.

Отдельные локали можно установить с помощью программы localedef. Например, первая команда localedef, приведенная ниже, объединяет определение локали для независимого набора данных/usr/share/i18n/locales/cs_CZ с определением таблицы отображения символов /usr/share/i18n/charmaps/UTF-8.gz и добавляет результат в файл /usr/lib/locale/locale-archive. Следующие инструкции установят минимальный набор локалей, необходимых для выполнения оптимального набора тестов:

mkdir -pv /usr/lib/localelocaledef -i cs_CZ -f UTF-8 cs_CZ.UTF-8localedef -i de_DE -f ISO-8859-1 de_DElocaledef -i de_DE@euro -f ISO-8859-15 de_DE@eurolocaledef -i de_DE -f UTF-8 de_DE.UTF-8localedef -i en_HK -f ISO-8859-1 en_HKlocaledef -i en_PH -f ISO-8859-1 en_PHlocaledef -i en_US -f ISO-8859-1 en_USlocaledef -i en_US -f UTF-8 en_US.UTF-8localedef -i es_MX -f ISO-8859-1 es_MXlocaledef -i fa_IR -f UTF-8 fa_IRlocaledef -i fr_FR -f ISO-8859-1 fr_FRlocaledef -i fr_FR@euro -f ISO-8859-15 fr_FR@eurolocaledef -i fr_FR -f UTF-8 fr_FR.UTF-8localedef -i it_IT -f ISO-8859-1 it_ITlocaledef -i ja_JP -f EUC-JP ja_JPlocaledef -i tr_TR -f UTF-8 tr_TR.UTF-8localedef -i zh_CN -f GB18030 zh_CN.GB18030

Дополнительно задайте локаль для своей страны, языка и набора символов.

Либо сразу установите все локали, перечисленные в файле glibc-2.13/localedata/SUPPORTED (в нем находятся все локали, перечисленные выше, и многие другие), с помощью одной следующей локали:

make localedata/install-locales

Затем с помощью команды localedef создайте и установите локали, которые не указаны в файле glibc-2.13/localedata/SUPPORTED, в том маловероятном случае, когда таковые вам потребуются.



<== предыдущая лекция | следующая лекция ==>
Описание заголовков Linux API | Конфигурирование пакета Glibc


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.152 сек.