libcpuid provides CPU identification. Supported CPU architectures are:
- x86:
- 32-bit CPUs (IA-32, also known as i386, i486, i586 and i686)
- 64-bit CPUs (x86_64, also known as x64, AMD64, and Intel 64)
- ARM (since v0.7.0):
- 64-bit CPUs (ARM64, also known as AArch64)
For details about the programming API, you might want to take a look at the project's website on sourceforge (https://libcpuid.sourceforge.net). There you'd find a short tutorial, as well as the full API reference.
You have two ways to get libcpuid:
- build it from sources
- download a pre-compiled binary
Using libcpuid requires no dependencies on any of the supported OSes. Building it requires build tool commands to be available, which is a matter of installing a few common packages with related names (e.g. automake, autoconf, libtool, cmake). It also requires a POSIX-compatible shell. On NetBSD, you may need to install one (credits to @brucelilly):
- Install a POSIX-compatible shell such as ksh93
pkg_add ast-ksh || pkgin in ast-ksh
- Export
CONFIG_SHELL
with correct path if required:
export CONFIG_SHELL=/usr/pkg/bin/ksh93
Two build systems are supported, use the one you prefer.
Under POSIX systems, where you download the sources, there's no configure script to run. This is because it isn't a good practice to keep such scripts in a source control system. To create it, you need to run the following commands once, after you checkout the libcpuid sources from GitHub:
libtoolize
autoreconf --install
You need to have autoconf
, automake
and libtool
installed.
After that you can run ./configure
and make
- this will build
the library.
make dist
will create a tarball (with "configure" inside) with the
sources.
Basic example to build and install libcpuid by using CMake:
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build
cmake --install build # may need administrative privileges, install under /usr/local by default
You can find latest versioned archives here, with binaries for macOS and Windows.
Also, libcpuid is available for following systems in official repositories:
- Arch Linux:
pacman -S libcpuid
- Debian (since version 11 "Bullseye"):
apt install cpuidtool libcpuid-dev
- Fedora (since version 25):
dnf install libcpuid libcpuid-devel
- FreeBSD (since version 11):
pkg install libcpuid
- OpenMandriva Lx (since version 4.0 "Nitrogen"):
dnf install libcpuid-tools libcpuid-devel
- openSUSE Leap (since version 15.1):
zypper install libcpuid-tools libcpuid-devel
- Solus:
eopkg install libcpuid libcpuid-devel
- Ubuntu (since version 20.04 "Focal Fossa") :
apt install cpuidtool libcpuid-dev
Below, the full lists of repositories:
- Vcpkg:
vcpkg install cpuid
Refer to the dedicated page.
So far, I'm aware of the following projects which utilize libcpuid (listed alphabetically):
- CPU-X (https://github.com/TheTumultuousUnicornOfDarkness/CPU-X)
- fre:ac (https://www.freac.org/)
- I-Nex (https://github.com/i-nex/I-Nex)
- Multiprecision Computing Toolbox for MATLAB (https://www.advanpix.com/)
- ucbench (http://anrieff.net/ucbench)
We'd love to hear from you if you are also using libcpuid and want your project listed above.