ScyllaDB University Live | Free Virtual Training Event
Learn more
ScyllaDB Documentation Logo Documentation
  • Server
  • Cloud
  • Tools
    • ScyllaDB Manager
    • ScyllaDB Monitoring Stack
    • ScyllaDB Operator
  • Drivers
    • CQL Drivers
    • DynamoDB Drivers
  • Resources
    • ScyllaDB University
    • Community Forum
    • Tutorials
Download
ScyllaDB Docs Scylla C/C++ Driver Features Building

Building¶

The Scylla C/C++ Driver will build on most standard Unix-like and Microsoft Windows platforms. Packages are available for the following platforms:

  • CentOS 7 64-bit

  • Ubuntu 18.04 LTS 64-bit

These packages can be successfully installed on other, compatible systems, but we do not support such configurations and recommend building from sources instead. Please note that although Microsoft Windows and OS X builds are possible, ScyllaDB does not support these platforms.

Compatibility¶

  • Compilers: GCC 4.1.2+ Clang 3.4+, and MSVC 2012+

Dependencies¶

The C/C++ driver depends on the following software:

  • CMake v2.6.4+

  • libuv 1.x

  • OpenSSL v1.0.x or v1.1.x *

  • zlib v1.x **

  • Kerberos v5 (Heimdal or MIT) ***

* Use the CASS_USE_OPENSSL CMake option to enable/disable OpenSSL support. Disabling this option will disable SSL/TLS protocol support within the driver; defaults to On.

** Use the CASS_USE_ZLIB CMake option to enable/disable zlib support. Defaults to On.

*** Use the CASS_USE_KERBEROS CMake option to enable/disable Kerberos support. Enabling this option will enable Kerberos authentication protocol within the driver (currently unusupproted by Scylla); defaults to Off.

Linux/Mac OS¶

The driver is known to build on CentOS/RHEL 6/7/8, Mac OS X 10.10/10.11 (Yosemite and El Capitan), Mac OS 10.12/10.13 (Sierra and High Sierra), and Ubuntu 14.04/16.04/18.04 LTS.

NOTE: The driver will also build on most standard Unix-like systems using GCC 4.1.2+ or Clang 3.4+.

Installing dependencies¶

Initial environment setup¶

CentOS/RHEL (Yum)¶
yum install automake cmake gcc-c++ git libtool
Ubuntu (APT)¶
apt-get update
apt-get install build-essential cmake git
Mac OS (Brew)¶

Homebrew (or brew) is a free and open-source software package management system that simplifies the installation of software on the Mac OS operating system. Ensure Homebrew is installed before proceeding.

brew update
brew upgrade
brew install autoconf automake cmake libtool

Kerberos¶

CentOS/RHEL (Yum)¶
yum install krb5-devel
Ubuntu (APT)¶
apt-get install libkrb5-dev

libuv¶

libuv v1.x should be used in order to ensure all features of the C/C++ driver are available. When using a package manager for your operating system make sure you install v1.x. Recent package repositories tend to have it available.

Ubuntu¶
sudo apt-get update
sudo apt-get install libuv-dev
CentOS/RHEL¶
sudo dnf install libuv-devel

If your package manager is not able to locate libuv, you might still be able to install it from EPEL:

sudo yum install -y epel-release
sudo yum install -y libuv-devel
Mac OS (Brew)¶
brew install libuv
Manually build and install¶

The following procedures should be performed if packages are not available for your system.

pushd /tmp
wget http://dist.libuv.org/dist/v1.34.0/libuv-v1.35.0.tar.gz
tar xzf libuv-v1.35.0.tar.gz
pushd libuv-v1.35.0
sh autogen.sh
./configure
make install
popd
popd

OpenSSL¶

CentOS (Yum)¶
yum install openssl-devel
Ubuntu (APT)¶
apt-get install libssl-dev
Mac OS (Brew)¶
brew install openssl

Note: For Mac OS X 10.11 (El Capitan) and Mac OS 10.12/10.13 (Sierra and High Sierra) a link needs to be created in order to make OpenSSL available to the building libraries:

brew link --force openssl
Manually build and install¶
pushd /tmp
wget --no-check-certificate https://www.openssl.org/source/openssl-1.0.2u.tar.gz
tar xzf openssl-1.0.2u.tar.gz
pushd openssl-1.0.2u
CFLAGS=-fpic ./config shared
make install
popd
popd

zlib¶

CentOS (Yum)¶
yum install zlib-devel
Ubuntu (APT)¶
apt-get install zlib1g-dev
Mac OS (Brew)¶
brew install zlib
Manually build and install¶
pushd /tmp
wget --no-check-certificate https://www.zlib.net/zlib-1.2.11.tar.gz
tar xzf zlib-1.2.11.tar.gz
pushd zlib-1.2.11
./configure
make install
popd
popd

Building and installing the C/C++ driver¶

mkdir build
pushd build
cmake ..
make
make install
popd

Building examples (optional)¶

Examples are not built by default and need to be enabled. Update your CMake line to build examples.

cmake -DCASS_BUILD_EXAMPLES=On ..

Building tests (optional)¶

Tests (integration and unit) are not built by default and need to be enabled.

All tests¶
cmake -DCASS_BUILD_TESTS=On ..

Note: This will build both the integration and unit tests

Integration tests¶
cmake -DCASS_BUILD_INTEGRATION_TESTS=On ..
Unit tests¶
cmake -DCASS_BUILD_UNIT_TESTS=On ..

Windows¶

The driver is known to build with Visual Studio 2010, 2012, 2013, 2015, 2017, and 2019.

Obtaining build dependencies¶

  • Download and install Bison

    • Make sure Bison is in your system PATH and not installed in a directory with spaces (e.g. %SYSTEMDRIVE%\GnuWin32)

  • Download and install CMake

    • Make sure to select the option “Add CMake to the system PATH for all users” or “Add CMake to the system PATH for current user”

  • Download and install Strawberry Perl or ActiveState Perl

    • Make sure to select the option “Add Perl to PATH environment variable”

  • Download and install Kerberos for Windows v4.0.1

    • 32-bit

    • 64-bit

Building the driver¶

First you will need to open a “Command Prompt” to execute the CMake commands.

Building the C/C++ driver¶

Supported generators are:

  • Visual Studio 10 2010

  • Visual Studio 11 2012

  • Visual Studio 12 2013

  • Visual Studio 14 2015

  • Visual Studio 15 2017

  • Visual Studio 16 2019

mkdir build
pushd build
cmake -G "Visual Studio 16 2019" -A x64 ..
cmake --build .
popd

Note: To build 32-bit binaries/libraries use -A Win32.

Building examples (optional)¶

Examples are not built by default and need to be enabled. Update your CMake line to build examples.

cmake -G "Visual Studio 16 2019" -A x64 -DCASS_BUILD_EXAMPLES=On ..

Building tests (optional)¶

Tests (integration and unit) are not built by default and need to be enabled.

All tests¶
cmake -G "Visual Studio 16 2019" -A x64 -DCASS_BUILD_TESTS=On ..

Note: This will build both the integration and unit tests

Integration tests¶
cmake -G "Visual Studio 16 2019" -A x64 -DCASS_BUILD_INTEGRATION_TESTS=On ..
Unit tests¶
cmake -G "Visual Studio 16 2019" -A x64 -DCASS_BUILD_UNIT_TESTS=On ..

Was this page helpful?

PREVIOUS
UUIDs
NEXT
Client Configuration
  • Create an issue
  • Edit this page

On this page

  • Building
    • Compatibility
    • Dependencies
    • Linux/Mac OS
      • Installing dependencies
        • Initial environment setup
          • CentOS/RHEL (Yum)
          • Ubuntu (APT)
          • Mac OS (Brew)
        • Kerberos
          • CentOS/RHEL (Yum)
          • Ubuntu (APT)
        • libuv
          • Ubuntu
          • CentOS/RHEL
          • Mac OS (Brew)
          • Manually build and install
        • OpenSSL
          • CentOS (Yum)
          • Ubuntu (APT)
          • Mac OS (Brew)
          • Manually build and install
        • zlib
          • CentOS (Yum)
          • Ubuntu (APT)
          • Mac OS (Brew)
          • Manually build and install
      • Building and installing the C/C++ driver
        • Building examples (optional)
        • Building tests (optional)
          • All tests
          • Integration tests
          • Unit tests
    • Windows
      • Obtaining build dependencies
      • Building the driver
        • Building the C/C++ driver
        • Building examples (optional)
        • Building tests (optional)
          • All tests
          • Integration tests
          • Unit tests
Scylla C/C++ Driver
  • master
    • master
  • C/C++ Driver for ScyllaDB
  • API Documentation
    • CassAggregateMeta
    • CassAuthenticator
    • CassAuthenticatorCallbacks
    • CassBatch
    • CassCluster
    • CassCollection
    • CassColumnMeta
    • CassCustomPayload
    • CassDataType
    • CassErrorResult
    • CassExecProfile
    • CassFunctionMeta
    • CassFuture
    • CassIndexMeta
    • CassInet
    • CassIterator
    • CassKeyspaceMeta
    • CassLogMessage
    • CassMaterializedViewMeta
    • CassMetrics
    • CassNode
    • CassPrepared
    • CassResult
    • CassRetryPolicy
    • CassRow
    • CassSchemaMeta
    • CassSession
    • CassSpeculativeExecutionMetrics
    • CassSsl
    • CassStatement
    • CassTableMeta
    • CassTimestampGen
    • CassTuple
    • CassUserType
    • CassUuid
    • CassUuidGen
    • CassValue
    • CassVersion
    • DseDateRange
    • DseDateRangeBound
    • DseLineString
    • DseLineStringIterator
    • DsePolygon
    • DsePolygonIterator
  • Features
    • Basics
      • Batches
      • Binding Parameters
      • Client-side timestamps
      • Consistency
      • Data Types
      • The date and time Types
      • Futures
      • Handling Results
      • Keyspaces
      • Prepared Statements
      • Schema Metadata
      • Tuples
      • User-Defined Types (UDTs)
      • UUIDs
    • Building
    • Client Configuration
    • Cloud
    • Configuration
      • Retry policies
    • Execution Profiles
    • FAQ
    • Installation
    • Logging
    • Metrics
    • Scylla Specific Features
    • Security
      • SSL
    • Testing
      • Cassandra Cluster Manager (CCM)
    • Tracing
  • DSE Features
    • Authentication
    • Geospatial types
Docs Tutorials University Contact Us About Us
© 2025, ScyllaDB. All rights reserved. | Terms of Service | Privacy Policy | ScyllaDB, and ScyllaDB Cloud, are registered trademarks of ScyllaDB, Inc.
Last updated on 28 April 2025.
Powered by Sphinx 7.4.7 & ScyllaDB Theme 1.8.6