Мультиархитектуры и их двоичные файлы
Почему есть /usr/lib
и /usr/lib32
каталог, но только /usr/bin
и нет /usr/bin32
каталог на 64-битной установке AMD64 для Ubuntu? Если или когда Debian/Ubuntu начнут поддерживать двоичные файлы с многоцелевой архитектурой в своих ELF, станет ли это ветвление каталогов ненужным?
2 ответа
Идея состоит в том, что вам может потребоваться установить 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/
Вы можете установить его и посмотреть, как это делается.