Мне было интересно узнать об этом специально для сборки программного обеспечения в Debian (установленная система Debian может быть 32-битной версией с 32-битным ядром, библиотеками и т. Д., Или это может быть 64-битная версия с материалами, скомпилированными для 64- бит, а не 32-битный режим совместимости).
Сами пакеты Debian должны знать, для какой они архитектуры (конечно), когда они фактически создают пакет со всеми его метаданными, включая архитектуру платформы, поэтому существует инструмент упаковки, который выводит его для использования другими инструментами упаковки и сценариями, называемый архитектура dpkg . Он включает в себя как то, для чего он настроен, так и текущий хост. (Обычно это то же самое.) Пример вывода на 64-битной машине:
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_OS=linux
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
Вы можете напечатать только одну из этих переменных или проверить их значения с помощью параметров командной строки для dpkg -architecture.
Я понятия не имею, как архитектура dpkg выводит архитектуру, но вы можете посмотреть ее документацию или исходный код (архитектура dpkg и большая часть системы dpkg в целом являются Perl).