Me preguntaba sobre esto específicamente para construir software en Debian (el sistema Debian instalado puede ser una versión de 32 bits con un núcleo de 32 bits, bibliotecas, etc., o puede ser una versión de 64 bits con material compilado para 64- bit en lugar del modo de compatibilidad de 32 bits).
Los paquetes Debian necesitan saber para qué arquitectura son (por supuesto) cuando realmente crean el paquete con todos sus metadatos, incluida la arquitectura de la plataforma, por lo que hay una herramienta de empaque que lo genera para que otras herramientas de empaque y scripts lo usen, llamado dpkg-architecture . Incluye tanto para qué está configurado para construir, como el host actual. (Normalmente, estos son los mismos). Ejemplo de salida en una máquina de 64 bits:
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
Puede imprimir solo una de esas variables o hacer una prueba con sus valores con opciones de línea de comando para dpkg -architecture.
No tengo idea de cómo dpkg-architecture deduce la arquitectura, pero podría ver su documentación o código fuente (dpkg-architecture y gran parte del sistema dpkg en general son Perl).