Building from Source

TileDB has been tested on Ubuntu Linux (v.20.04+), CentOS Linux (v.7+, with updated devtoolset compiler), macOS (v.11) and Windows (7+), but TileDB should work with any reasonably recent version of Ubuntu, CentOS, macOS or Windows with an installed compiler supporting C++20 (minimum tested version: GCC 10).

Once you build TileDB, visit the Usage page to see how to use TileDB in your programs.

Build Requirements

TileDB requires a recent version of the CMake build system (and if needed vcpkg will update), and a compiler supporting C++20. For compression, TileDB relies on the following libraries:

When building from source, TileDB will locate these dependencies if already installed on your system, and locally install (not system-wide) any of them that are missing.

Optional Dependencies


Backend support for S3 stores requires the AWS C++ SDK. Similarly to the required dependencies, the TileDB build system will install the SDK locally if it is not already present on your system (when the S3 build option is enabled).

TileDB also integrates well with the S3-compliant minio object store.


Backend support for the Hadoop File System HDFS is optional. TileDB relies on the C interface to HDFS provided by libhdfs to interact with the distributed filesystem.

During the build process the following environmental variables must be set:

  • JAVA_HOME: Path to the location of the Java installation.

  • HADOOP_HOME: Path to the location of the HDFS installation.

  • CLASSPATH: The Hadoop jars must be added to the CLASSPATH before interacting with libhdfs.

Consult the HDFS user guide for installing, setting up, and using the distributed Hadoop file system.

HDFS is not currently supported on Windows.

Dependency Installation

If any dependencies are not found pre-installed on your system, the TileDB build process will download and build them automatically. Preferentially, any dependencies built by this process will be built as static libraries, which are statically linked against the TileDB shared library during the build. This simplifies usage of TileDB, as it results in a single binary object, e.g. that contains all of the dependencies. When installing TileDB, only the TileDB include files and the dynamic object will be copied into the installation prefix.

If TileDB is itself built as a static library (using the TILEDB_STATIC=ON CMake variable or corresponding bootstrap flag), the dependency static libraries must be installed alongside the resulting static libtiledb.a object. This is because static libraries cannot be statically linked together into a single object (at least not in a portable way). Therefore, when installing TileDB all static dependency libraries will be copied into the installation prefix alongside libtiledb.a.

Last updated