Мне было интересно узнать об этом специально для сборки программного обеспечения в 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 -архитектуры.
Я понятия не имею, как архитектура dpkg выводит архитектуру, но вы можете посмотреть ее документацию или исходный код (архитектура dpkg и большая часть системы dpkg в целом являются Perl).