This file contains instructions to build and install the TSS libraries.
To build and install the tpm2-tss software the following software packages are required. In many cases dependencies are platform specific and so the following sections describe them for the supported platforms.
The following are dependencies only required when building test suites.
Most users will not need to install these dependencies.
$ sudo apt -y update $ sudo apt -y install \ autoconf-archive \ libcmocka0 \ libcmocka-dev \ build-essential \ git \ pkg-config \ gcc \ g++ \ m4 \ libtool \ automake \ liburiparser-dev \ libgcrypt20-dev \ libssl-dev \ autoconf
Note: In some Ubuntu versions, the lcov and autoconf-archive packages are incompatible with each other. Recommend downloading autoconf-archives directly from upstream and copy ax_code_coverage.m4.
There is a package already, so the package build dependencies information can be used to make sure that the needed packages to compile from source are installed:
$ sudo dnf builddep tpm2-tss
Windows dlls built using the Clang/LLVM "Platform Toolset" are currently prototypes. We have only tested using Visual Studio 2017 with the Universal C Runtime (UCRT) version 10.0.16299.0. Building the type marshaling library (tss2-mu.dll) and the system API (tss2-sapi.dll) should be as simple as loading the tpm2-tss solution (tpm2-tss.sln) with a compatible and properly configured version of Visual Studio 2017 and pressing the 'build' button.
Visual Studio 2017 with "Clang for Windows": https://blogs.msdn.microsoft.com/vcblog/2017/03/07/use-any-c-compiler-with-visual-studio/ Universal CRT overview & setup instructions: https://docs.microsoft.com/en-us/cpp/porting/upgrade-your-code-to-the-universal-crt
To configure the tpm2-tss source code first run the bootstrap script, which generates list of source files, and creates the configure script:
$ ./bootstrap
Then run the configure script, which generates the makefiles:
$ ./configure
Then compile the code using make:
$ make -j$(nproc)
Once you've built the tpm2-tss software it can be installed with:
$ sudo make install
This will install the libraries to a location determined at configure time. See the output of ./configure --help for the available options. Typically you won't need to do much more than provide an alternative --prefix option at configure time, and maybe DESTDIR at install time if you're packaging for a distro.
NOTE: It may be necessary to run ldconfig (as root) to update the run-time bindings before executing a program that links against libsapi or a TCTI library:
$ sudo ldconfig
If you are having trouble installing the dependencies on your machine you can build in a container.
$ docker build -t tpm2 . $ docker run --name temp tpm2 /bin/true $ docker cp temp:/tpm2-tss tpm2-tss $ docker rm temp
tpm2-tss is now in your working directory and contains all the built files.