HOWTO Переход на NPTL

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства

Содержание

[править] Что такое NPTL?

Native POSIX Thread Library (NPTL) - это библиотека потоков POSIX, которая, в отличии от предыдущих попыток, находится в ядре на очень высоком уровне. Это позволяет достигнуть максимальной производительности при минимальном затрате ресурсов. NPTL разрабатывалась как замена устаревшей библиотеке linuxthread. Главное преимущество NPTL перед linuxthreads для пользователей в том, что она быстрее (подробнее в PDF-документе). Для программистов она лучше тем, что стала более posix-совместимой.

[править] Использование NPTL

Если вы хотите использовать NPTL с самого начала (то есть с момента установки системы), то вам необходимо запустить скрипт bootstrap-2.6.sh. Wiki-статья HOWTO Gentoo 2004.2 for linux 2.6 and NPTL совместно с этим HOWTO и c этой веткой форума даст вам необходимую информацию. Убедитесь что у вас есть официальная документация по установке, так как это всего лишь ее небольшая часть. Дальнейшая установка не зависит от выбора библиотеки потоков.

[править] Переход на NPTL

Также возможно перейти на NPTL и после установки. Вам будет необходимо установить linux26-headers и удалить linux-headers,если вы их все еще используете. Для всего нижеперечисленного необходимо ядро ветки 2.6. Подразумевается,что система и нужное ядро уже установлены.Начнем:

Добавьте USE-флаги nptl и nptlonly в /etc/make.conf Затем:

emerge unmerge linux-headers

emerge --oneshot linux26-headers

emerge glibc

Примечание: Выше приведённое описание перехода не работает на 2005.1 и выше, так как там уже не существует linux26-headers.
Соответстевенно переход на NPTL на этих версиях и выше выглядит так:
  • Добавьте USE-флаги nptl и nptlonly в /etc/make.conf

emerge linux-headers

emerge glibc

Эти обе команды просто пересоберут эти две библиотеки с новыми флагами. Дальше всё по описанию.

После перезагрузки у вас будет NPTL. Проверить наличие NPTL можно командой /lib/libc.so.6 или /lib/tls/libc.so.6

Вот что приблизительно должно отобразиться:

Code: Вывод Libc.so.6
GNU C Library 20041102 release version 2.3.4, by Roland McGrath et al.
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 3.4.3 20041125 (Gentoo Linux 3.4.3-r1, ssp-3.4.3-0, pie-8.7.7).
Compiled on a Linux 2.6.8 system on 2004-12-21.
Available extensions:
       GNU libio by Per Bothner
       crypt add-on version 2.1 by Michael Glad and others
       Native POSIX Threads Library by Ulrich Drepper et al
       The C stubs add-on version 2.1.2.
       GNU Libidn by Simon Josefsson
       BIND-8.2.3-T5B
       NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
Примечание 
Вам также может потребоваться переустановка nvidia-glx если XMMS или MPlayer будут работать не корректно.

[править] Замечания

[править] Дополнительная информация

В соответствии с данным постом - вам не обязательно нужно использовать 2.6 ядро чтобы собрать glibc с поддержкой NPTL. Конечно с ядром 2.4 вы не сможете по-настоящему использовать NPTL, для этого необходимо ядро с портированной поддержкой NPTL.

Это обсуждение также интересно.

[править] Часто встречающиеся ошибки

Если установка libc прерывается с ошибкой the virtual/os-headers package conflicts with with another package. both can't be installed on the same system together (это указывает на sys-kernel/linux-headers и linux26-headers-*), то вы забыли удалить пакет linux-headers

Также убедитесь что переменная CHOST из /etc/make.conf равна i686. В противном случае поддержка NPTL скомпилирована не будет.

Dron А у меня на i586 скомпилилась, что я сделал не так? :-)

12:39, 16 Фев 2005 (GMT) Начиная с i586 будет собираться

[править] FAQ

Смогу я удалить NPTL и переустановить glibc без нее?
Да. Нет никаких обратных эффектов после удаления NPTL.
Она будет работать с GCC 3.4?
Да. NPTL полностью совместима с GCC 3.4.
Какие еще пакеты кроме glibc используют NPTL?
Ximian OpenOffice, Wine и Mono в настоящее время используют ее. Я надеюсь, что вы выполните emerge --newuse world после переключения на NPTL для переустановки пакетов с обновленными USE-флагами.
Примечание: Причем никогда не забывайте убирать из флаги -fPIC и другие похожие, иначе не собирается
Личные инструменты
На других языках