-
Puede ver si la CPU es de 64 bits, 32 bits, o ambos, marcando el
flagslínea en/proc/cpuinfo. Tienes que conocer las posibles banderas en tu familia de arquitectura. Por ejemplo, en las plataformas i386/amd64, ellmidentifica las CPU compatibles con amd64 (las CPU que no tienen esa bandera son solo i386).grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo # Assuming a PC -
Puede ver si el kernel es de 32 bits o de 64 bits consultando la arquitectura con
uname -m. Por ejemplo,i[3456]86son de 32 bits mientras quex86_64es de 64 bits. Tenga en cuenta que en varias arquitecturas, un kernel de 64 bits puede ejecutar programas de 32 bits en el espacio del usuario, por lo que incluso si eluname -mmuestra un kernel de 64 bits, no hay garantía de que las bibliotecas de 64 bits estén disponibles.[ "$(uname -m)" = "x86_64" ] # Assuming a PCTenga en cuenta también que
uname -mpuede devolver un valor "virtualizado". Por ejemplo, en Linux, si ejecutasetarch i386 bashen un sistema amd64 y ejecutauname -mde esa fiesta, verásuname -minformandoi386. Esto le permite fingir que está en un "sistema de 32 bits" aunque el kernel sea de 64 bits, por ejemplo, para compilar programas de 32 bits sin configurar la compilación cruzada. -
Puede ver lo que está disponible en la zona de usuario consultando el soporte de LSB con el
lsb_releasedominio. Más precisamente,lsb_release -simprime un:-Lista separada de funciones LSB admitidas. Cada función tiene la formamodule-version-architecture. Por ejemplo, la disponibilidad de una biblioteca ix86 C se indica mediantecore-2.0-ia32, mientras quecore-2.0-amd64es el análogo para amd64. Sin embargo, no todas las distribuciones declaran todos los módulos LSB disponibles, por lo que puede haber más disponibles de los que se pueden detectar de esta manera. -
Puede averiguar el tamaño de palabra preferido para el desarrollo (suponiendo que haya un compilador C disponible) compilando un programa C de 5 líneas que imprima
sizeof(void*)osizeof(size_t).
Puedes usar uname -a y busca x86_64 para ver si está ejecutando 64 bits. Cualquier otra cosa (hasta donde yo sé) y está ejecutando 32 bits o está en hardware que no es de PC como alpha , sparc o ppc64 .
uname -m | sed 's/x86_//;s/i[3-6]86/32/'