Prerequisites: python3; gcc and/or clang. For sysadmins, to install in /usr/local/{include,lib,bin}: ./configure make install For users, to install in $HOME/{include,lib,bin}: ./configure --prefix=$HOME make install For distributors creating a package: Run ./configure --prefix=/usr make and then follow your usual packaging procedures for the .h files in build/0/package/include, the libraries in build/0/package/lib, and the test programs in build/0/package/bin. Distributors may prefer to package -lrandombytes_kernel separately. This is split off from -l25519 to allow easy substitution of other randombytes() implementations. For example, lib25519-test substitutes its own knownrandombytes() to generate test vectors. As another example, users selecting an alternative randombytes() implementation such as -lrandombytes_per_process_rng or -lrandombytes_trust_intel_rdrand shouldn't have to change how programs call randombytes(). Programs and libraries calling randombytes() should generally be packaged to use -lrandombytes, which in turn should be packaged to select -lrandombytes_kernel by default. The selection package (or a development package that requires the selection package) should also provide randombytes.h, while specific randombytes() implementations such as -lrandombytes_kernel should not provide randombytes.h; this is why include/randombytes.h is not provided by this library. 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 implementations to try (see crypto_*/*/*/architectures) and which compilers to try (see compilers/*). 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", but there's a ./configure --noclean option for developers who know what they're doing. A subsequent ./configure --host=arm will create build/arm and symlink 0 -> arm, without touching an existing build/amd64. However, cross-compilers aren't yet selected automatically.