LinuxCommandLibrary

x86_64

Determine if system is 64-bit

TLDR

View documentation for the original command

$ tldr setarch
copy

SYNOPSIS

Not a command; output of uname -m or arch on x86_64 systems.

DESCRIPTION

x86_64 is not a standalone Linux command or executable. Instead, it is the standard identifier for the 64-bit extension of the x86 processor architecture, also known as AMD64 or Intel 64. In Linux environments, it appears as output from commands like uname -m, arch, or grep '^model name' /proc/cpuinfo.

This architecture, introduced by AMD in 2000, supports 64-bit virtual addressing (up to 2^48 bytes typically), 16 general-purpose registers (vs 8 in 32-bit), SIMD extensions like SSE/AVX, and backward compatibility with 32-bit x86 code via a legacy mode. Nearly all modern Linux distributions (e.g., Ubuntu, Fedora, Debian) use x86_64 as their default target for kernels, binaries, and packages.

In practice, x86_64 is embedded in ELF file headers (readelf -h shows "Machine: Advanced Micro Devices X86-64"), dynamic linker paths (/lib64/ld-linux-x86-64.so.2), and package naming (e.g., glibc-x86_64). Cross-compilation uses triplets like x86_64-linux-gnu-gcc. For emulation, QEMU provides qemu-system-x86_64. Multiarch support allows running 32-bit apps on x86_64 systems via i386 packages.

Detecting it helps in scripting: if [[ $(uname -m) == x86_64 ]]; then echo '64-bit'; fi. It dominates servers, desktops, and cloud (99%+ of Linux servers). Limitations include no native 128-bit support yet.

CAVEATS

Not executable; mistaking for command may indicate confusion with architecture detection tools. 32-bit compatibility requires additional packages.

DETECTION METHODS

uname -m, arch, lscpu | grep Architecture, or grep flags /proc/cpuinfo | grep lm (long mode = x86_64 capable).

COMPILATION TARGET

Use gcc -m64 or triplet x86_64-linux-gnu-gcc; check with gcc -dumpmachine.

HISTORY

AMD announced Opteron (K8) architecture in 2000 as AMD64; Linux kernel support merged 2004 (v2.6.11). Intel adopted as EM64T (2004), later Intel 64. Became de facto standard by 2010, replacing i686.

SEE ALSO

uname(1), arch(1), readelf(1), file(1), getconf(3)

Copied to clipboard