diff options
author | Peter Dillinger <peterd@fb.com> | 2022-02-04 17:12:03 -0800 |
---|---|---|
committer | Facebook GitHub Bot <facebook-github-bot@users.noreply.github.com> | 2022-02-04 17:13:10 -0800 |
commit | fd3e0f43b3cd041c38e37543e0b616d18ca55179 (patch) | |
tree | 626664991430abdbc4fc9928aba03486150dc3ac /INSTALL.md | |
parent | 42c8afd85a12935fdeddf62acccbbf5e39a84504 (diff) |
Require C++17 (#9481)
Summary:
Drop support for some old compilers by requiring C++17 standard
(or higher). See https://github.com/facebook/rocksdb/issues/9388
First modification based on this is to remove some conditional compilation in slice.h (also
better for ODR)
Also in this PR:
* Fix some Makefile formatting that seems to affect ASSERT_STATUS_CHECKED config in
some cases
* Add c_test to NON_PARALLEL_TEST in Makefile
* Fix a clang-analyze reported "potential leak" in lru_cache_test
* Better "compatibility" definition of DEFINE_uint32 for old versions of gflags
* Fix a linking problem with shared libraries in Makefile (`./random_test: error while loading shared libraries: librocksdb.so.6.29: cannot open shared object file: No such file or directory`)
* Always set ROCKSDB_SUPPORT_THREAD_LOCAL and use thread_local (from C++11)
* TODO in later PR: clean up that obsolete flag
* Fix a cosmetic typo in c.h (https://github.com/facebook/rocksdb/issues/9488)
Pull Request resolved: https://github.com/facebook/rocksdb/pull/9481
Test Plan:
CircleCI config substantially updated.
* Upgrade to latest Ubuntu images for each release
* Generally prefer Ubuntu 20, but keep a couple Ubuntu 16 builds with oldest supported
compilers, to ensure compatibility
* Remove .circleci/cat_ignore_eagain except for Ubuntu 16 builds, because this is to work
around a kernel bug that should not affect anything but Ubuntu 16.
* Remove designated gcc-9 build, because the default linux build now uses GCC 9 from
Ubuntu 20.
* Add some `apt-key add` to fix some apt "couldn't be verified" errors
* Generally drop SKIP_LINK=1; work-around no longer needed
* Generally `add-apt-repository` before `apt-get update` as manual testing indicated the
reverse might not work.
Travis:
* Use gcc-7 by default (remove specific gcc-7 and gcc-4.8 builds)
* TODO in later PR: fix s390x "Assembler messages: Error: invalid switch -march=z14" failure
AppVeyor:
* Completely dropped because we are dropping VS2015 support and CircleCI covers
VS >= 2017
Also local testing with old gflags (out of necessity when using ROCKSDB_NO_FBCODE=1).
Reviewed By: mrambacher
Differential Revision: D33946377
Pulled By: pdillinger
fbshipit-source-id: ae077c823905b45370a26c0103ada119459da6c1
Diffstat (limited to 'INSTALL.md')
-rw-r--r-- | INSTALL.md | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/INSTALL.md b/INSTALL.md index a1521fb51..96ece3d2d 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -6,7 +6,7 @@ than release mode. RocksDB's library should be able to compile without any dependency installed, although we recommend installing some compression libraries (see below). -We do depend on newer gcc/clang with C++11 support. +We do depend on newer gcc/clang with C++17 support (GCC >= 7, Clang >= 5). There are few options when compiling RocksDB: @@ -50,7 +50,7 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi ## Supported platforms * **Linux - Ubuntu** - * Upgrade your gcc to version at least 4.8 to get C++11 support. + * Upgrade your gcc to version at least 7 to get C++17 support. * Install gflags. First, try: `sudo apt-get install libgflags-dev` If this doesn't work and you're using Ubuntu, here's a nice tutorial: (http://askubuntu.com/questions/312173/installing-gflags-12-04) @@ -62,8 +62,7 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi * Install zstandard: `sudo apt-get install libzstd-dev`. * **Linux - CentOS / RHEL** - * Upgrade your gcc to version at least 4.8 to get C++11 support: - `yum install gcc48-c++` + * Upgrade your gcc to version at least 7 to get C++17 support * Install gflags: git clone https://github.com/gflags/gflags.git @@ -113,11 +112,11 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi make && sudo make install * **OS X**: - * Install latest C++ compiler that supports C++ 11: + * Install latest C++ compiler that supports C++ 17: * Update XCode: run `xcode-select --install` (or install it from XCode App's settting). * Install via [homebrew](http://brew.sh/). * If you're first time developer in MacOS, you still need to run: `xcode-select --install` in your command line. - * run `brew tap homebrew/versions; brew install gcc48 --use-llvm` to install gcc 4.8 (or higher). + * run `brew tap homebrew/versions; brew install gcc7 --use-llvm` to install gcc 7 (or higher). * run `brew install rocksdb` * **FreeBSD** (11.01): @@ -160,7 +159,7 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi * Install the dependencies for RocksDB: - pkg_add gmake gflags snappy bzip2 lz4 zstd git jdk bash findutils gnuwatch + pkg_add gmake gflags snappy bzip2 lz4 zstd git jdk bash findutils gnuwatch * Build RocksDB from source: @@ -182,13 +181,13 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi * **Windows**: * For building with MS Visual Studio 13 you will need Update 4 installed. * Read and follow the instructions at CMakeLists.txt - * Or install via [vcpkg](https://github.com/microsoft/vcpkg) + * Or install via [vcpkg](https://github.com/microsoft/vcpkg) * run `vcpkg install rocksdb:x64-windows` * **AIX 6.1** * Install AIX Toolbox rpms with gcc * Use these environment variables: - + export PORTABLE=1 export CC=gcc export AR="ar -X64" @@ -199,9 +198,9 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi export LIBPATH=/opt/freeware/lib export JAVA_HOME=/usr/java8_64 export PATH=/opt/freeware/bin:$PATH - + * **Solaris Sparc** - * Install GCC 4.8.2 and higher. + * Install GCC 7 and higher. * Use these environment variables: export CC=gcc @@ -210,4 +209,3 @@ to build a portable binary, add `PORTABLE=1` before your make commands, like thi export EXTRA_LDFLAGS=-m64 export PORTABLE=1 export PLATFORM_LDFLAGS="-static-libstdc++ -static-libgcc" - |