Вопрос или проблема
Поскольку я переключаюсь на другую дистрибуцию, этот вопрос является продолжением этой проблемы по получению максимальной производительности от программы, требующей много ресурсов процессора, которая не может обрабатывать 64-битные указатели.
Проблема заключается не только в использовании необходимых binutils и компиляторов.
Также нужны библиотеки, такие как glibc. И на данный момент ни один пакет не содержит x32.
x32 ABI
не поддерживается в Fedora ни в каком виде. Нет поддержки ядра, нет поддержки пользовательского пространства. Вы полностью наедине с этой проблемой.
Если вы говорите о i386/i686
, тогда, в отличие от Debian, вам не нужно ничего включать, достаточно установить требуемый пакет или библиотеку i686:
dnf install package-name.i686
Все зависимости будут установлены автоматически. gcc
в Fedora способен компилировать i686
бинарники «из коробки», но версии i686
не существует, однако, если вы собираетесь компилировать что-то, что зависит от libstdc++, вам, возможно, придется установить libgcc.i686
.
Ответ или решение
Установка поддержки ABI x32 на Fedora может вызвать затруднения, так как эта архитектура не поддерживается данной операционной системой на уровне ядра и пользовательского пространства. Однако, если ваша цель — использовать 32-битные библиотеки для повышения производительности специфичных CPU-нагружающих программ, которые не могут обрабатывать 64-битные указатели, вы можете рассмотреть установку 32-битной версии программ и библиотек.
Установка 32-битной поддержки (i686)
В Fedora поддержка 32-битных библиотек (i686) включена по умолчанию, и вы можете установить необходимые пакеты без каких-либо дополнительных настроек. Для этого выполните следующие шаги:
-
Обновите список пакетов:
sudo dnf update
-
Установите необходимые 32-битные пакеты:
Для установки пакета с 32-битной версией просто добавьте.i686
к имени пакета. Например, чтобы установить библиотекуglibc
, используйте следующую команду:sudo dnf install glibc.i686
-
Установка библиотек для компиляции:
Если вы планируете компилировать программы, которые зависят отlibstdc++
, возможно, вам также придется установить 32-битную версию:sudo dnf install libgcc.i686 libstdc++.i686
Компиляция программ для 32-битной архитектуры
Если вам нужно скомпилировать программу для 32-битной архитектуры, вы можете использовать gcc
, который поддерживает компиляцию 32-битных бинарных файлов из коробки. Например:
gcc -m32 -o my_program my_program.c
Флаг -m32
указывает компилятору, что вы хотите создать 32-битный исполняемый файл.
Зависимости и установка других пакетов
Учтите, что для многих пакетов необходимо будет устанавливать совместимые 32-битные зависимости. Если вы получаете ошибки о недостающих библиотеках при запуске 32-битных программ, возможно, вам придется установить дополнительные пакеты в формате .i686
.
Заключение
Несмотря на то что поддержка x32 ABI отсутствует в Fedora, вы можете без проблем работать с 32-битными приложениями и библиотеками, установив их с помощью пакетного менеджера dnf
. Просто убедитесь, что все необходимые зависимости также установлены, чтобы ваше приложение работало корректно.