Prerequisites: python3
; gcc
and/or clang
. Currently tested only
under Linux, but porting to other systems shouldn't be difficult.
For sysadmins, to install in /usr/local/{include,lib,bin}
:
./configure && make -j8 install
For developers with an unprivileged account (typically with
export LD_LIBRARY_PATH="$HOME/lib"
export LIBRARY_PATH="$HOME/lib"
export CPATH="$HOME/include"
export PATH="$HOME/bin:$PATH"
in $HOME/.profile
), to install in $HOME/{include,lib,bin}
:
./configure --prefix=$HOME && make -j8 install
For distributors creating a package: Run
./configure --prefix=/usr && make -j8
and then follow your usual packaging procedures for the
build/0/package
files:
build/0/package/man/man3/cpucycles.3
build/0/package/include/cpucycles.h
build/0/package/lib/libcpucycles*
build/0/package/bin/cpucycles-info
There are some old systems where libcpucycles requires -lrt
for
clock_gettime
; currently libcpucycles.so
doesn't link to -lrt
,
so it's up to the caller to link to -lrt
.
More options: You can run
./configure --host=amd64
to override ./configure
's guess of the architecture that it should
compile for. The architecture controls which cycle counters to try
compiling: e.g., amd64
tries compiling cpucycles/amd64*
and
cpucycles/default*
.
Inside the build
directory, 0
is symlinked to amd64
for
--host=amd64
. Running make clean
removes build/amd64
. Re-running
./configure
automatically starts with make clean
.
A subsequent ./configure --host=arm64
will create build/arm64
and
symlink 0 -> arm64
, without touching an existing build/amd64
.
However, cross-compilers aren't yet selected automatically.
Compilers tried are listed in compilers/default
. Each compiler
includes -fPIC
to create a shared library, -fvisibility=hidden
to
hide non-public symbols in the library, and -fwrapv
to switch to a
slightly less dangerous version of C. The first compiler that seems to
work is used to compile everything.
Version: This is version 2023.01.05 of the "Install" web page.