Назад | Перейти на главную страницу

Мультиархитектуры и их двоичные файлы

Почему есть /usr/lib и а /usr/lib32 каталог, но только а /usr/bin и нет /usr/bin32 каталог на AMD64 64-разрядной версии Ubuntu? Если или когда Debian / Ubuntu начнут поддерживать двоичные файлы с многоцелевой архитектурой в своих ELF, станет ли это ветвление каталогов ненужным?

Идея состоит в том, что вы можете установить в вашей системе как 32-разрядную, так и 64-разрядную версии одной и той же библиотеки, чтобы разместить двоичные файлы с использованием любой архитектуры, тогда как нет смысла иметь один и тот же двоичный файл в двух разных архитектурах.

Некоторые приложения очень интенсивно используют указатели, и в этом случае запуск 32-разрядной версии для небольшого набора данных может быть более эффективным, поскольку вы сэкономите память и уменьшите количество промахов в кеше. Это будет работать только до 3 ГБ адресного пространства для i386 (или 2 ГБ, в зависимости от параметров времени компиляции ядра).

Если вы столкнетесь с ситуацией, когда 32-битный двоичный файл имеет больше смысла, вы можете перекомпилировать его самостоятельно. Однако это слишком сложный случай для дистрибутивов. Если вы считаете, что это решение неверно, вы всегда можете создать запрос функции.

Другой подход - установить 32-битную версию всего дистрибутива и запустить ее с 64-битным ядром. Это будет работать нормально, каждый процесс будет иметь доступ к 4 ГБ памяти (вместо 3 ГБ или меньше, как упоминалось ранее), система может использовать более 4 ГБ ОЗУ, и ядру не нужны никакие уловки, которые 32-разрядные ядра используют (например PAE).

У Debian уже есть многоархивные выпуски:

http://cdimage.debian.org/debian-cd/6.0.5/multi-arch/iso-cd/

Вы можете установить его и посмотреть, как это делается.