Building from Source
TileDB has been tested on Ubuntu Linux (v.18.04+), CentOS Linux (v.7+), macOS Mojave (v.10.14) and Windows (7+), but TileDB should work with any reasonably recent version of Ubuntu, CentOS, macOS or Windows with an installed compiler supporting C++17 (minimum tested version: GCC 7.3).
TileDB requires a recent version (3.21 or later) of the CMake build system, and a compiler supporting C++17. 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.
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).
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
CLASSPATHbefore interacting with
Consult the HDFS user guide for installing, setting up, and using the distributed Hadoop file system.
HDFS is not currently supported on Windows.
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.
libtiledb.sothat contains all of the dependencies. When installing TileDB, only the TileDB include files and the dynamic object
libtiledb.sowill be copied into the installation prefix.
If TileDB is itself built as a static library (using the
TILEDB_STATIC=ONCMake variable or corresponding
bootstrapflag), the dependency static libraries must be installed alongside the resulting static
libtiledb.aobject. 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