]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | ## Compilation |
2 | ||
3 | **Important**: If you plan to run RocksDB in production, don't compile using default | |
4 | `make` or `make all`. That will compile RocksDB in debug mode, which is much slower | |
5 | than release mode. | |
6 | ||
7 | RocksDB's library should be able to compile without any dependency installed, | |
8 | although we recommend installing some compression libraries (see below). | |
9 | We do depend on newer gcc/clang with C++11 support. | |
10 | ||
11 | There are few options when compiling RocksDB: | |
12 | ||
13 | * [recommended] `make static_lib` will compile librocksdb.a, RocksDB static library. Compiles static library in release mode. | |
14 | ||
15 | * `make shared_lib` will compile librocksdb.so, RocksDB shared library. Compiles shared library in release mode. | |
16 | ||
17 | * `make check` will compile and run all the unit tests. `make check` will compile RocksDB in debug mode. | |
18 | ||
19 | * `make all` will compile our static library, and all our tools and unit tests. Our tools | |
20 | depend on gflags. You will need to have gflags installed to run `make all`. This will compile RocksDB in debug mode. Don't | |
21 | use binaries compiled by `make all` in production. | |
22 | ||
23 | * By default the binary we produce is optimized for the platform you're compiling on | |
11fdf7f2 TL |
24 | (`-march=native` or the equivalent). SSE4.2 will thus be enabled automatically if your |
25 | CPU supports it. To print a warning if your CPU does not support SSE4.2, build with | |
26 | `USE_SSE=1 make static_lib` or, if using CMake, `cmake -DFORCE_SSE42=ON`. If you want | |
27 | to build a portable binary, add `PORTABLE=1` before your make commands, like this: | |
28 | `PORTABLE=1 make static_lib`. | |
7c673cae FG |
29 | |
30 | ## Dependencies | |
31 | ||
32 | * You can link RocksDB with following compression libraries: | |
33 | - [zlib](http://www.zlib.net/) - a library for data compression. | |
34 | - [bzip2](http://www.bzip.org/) - a library for data compression. | |
11fdf7f2 | 35 | - [lz4](https://github.com/lz4/lz4) - a library for extremely fast data compression. |
7c673cae FG |
36 | - [snappy](http://google.github.io/snappy/) - a library for fast |
37 | data compression. | |
38 | - [zstandard](http://www.zstd.net) - Fast real-time compression | |
39 | algorithm. | |
40 | ||
41 | * All our tools depend on: | |
42 | - [gflags](https://gflags.github.io/gflags/) - a library that handles | |
43 | command line flags processing. You can compile rocksdb library even | |
44 | if you don't have gflags installed. | |
45 | ||
494da23a TL |
46 | * If you wish to build the RocksJava static target, then cmake is required for building Snappy. |
47 | ||
7c673cae FG |
48 | ## Supported platforms |
49 | ||
50 | * **Linux - Ubuntu** | |
51 | * Upgrade your gcc to version at least 4.8 to get C++11 support. | |
52 | * Install gflags. First, try: `sudo apt-get install libgflags-dev` | |
53 | If this doesn't work and you're using Ubuntu, here's a nice tutorial: | |
54 | (http://askubuntu.com/questions/312173/installing-gflags-12-04) | |
55 | * Install snappy. This is usually as easy as: | |
56 | `sudo apt-get install libsnappy-dev`. | |
57 | * Install zlib. Try: `sudo apt-get install zlib1g-dev`. | |
58 | * Install bzip2: `sudo apt-get install libbz2-dev`. | |
11fdf7f2 | 59 | * Install lz4: `sudo apt-get install liblz4-dev`. |
7c673cae FG |
60 | * Install zstandard: `sudo apt-get install libzstd-dev`. |
61 | ||
62 | * **Linux - CentOS / RHEL** | |
63 | * Upgrade your gcc to version at least 4.8 to get C++11 support: | |
64 | `yum install gcc48-c++` | |
65 | * Install gflags: | |
66 | ||
67 | git clone https://github.com/gflags/gflags.git | |
68 | cd gflags | |
69 | git checkout v2.0 | |
70 | ./configure && make && sudo make install | |
71 | ||
11fdf7f2 TL |
72 | **Notice**: Once installed, please add the include path for gflags to your `CPATH` environment variable and the |
73 | lib path to `LIBRARY_PATH`. If installed with default settings, the include path will be `/usr/local/include` | |
74 | and the lib path will be `/usr/local/lib`. | |
7c673cae FG |
75 | |
76 | * Install snappy: | |
77 | ||
11fdf7f2 | 78 | sudo yum install snappy snappy-devel |
7c673cae FG |
79 | |
80 | * Install zlib: | |
81 | ||
11fdf7f2 | 82 | sudo yum install zlib zlib-devel |
7c673cae FG |
83 | |
84 | * Install bzip2: | |
85 | ||
11fdf7f2 TL |
86 | sudo yum install bzip2 bzip2-devel |
87 | ||
88 | * Install lz4: | |
89 | ||
90 | sudo yum install lz4-devel | |
91 | ||
92 | * Install ASAN (optional for debugging): | |
93 | ||
94 | sudo yum install libasan | |
7c673cae FG |
95 | |
96 | * Install zstandard: | |
97 | ||
98 | wget https://github.com/facebook/zstd/archive/v1.1.3.tar.gz | |
99 | mv v1.1.3.tar.gz zstd-1.1.3.tar.gz | |
100 | tar zxvf zstd-1.1.3.tar.gz | |
101 | cd zstd-1.1.3 | |
102 | make && sudo make install | |
103 | ||
104 | * **OS X**: | |
105 | * Install latest C++ compiler that supports C++ 11: | |
106 | * Update XCode: run `xcode-select --install` (or install it from XCode App's settting). | |
107 | * Install via [homebrew](http://brew.sh/). | |
108 | * If you're first time developer in MacOS, you still need to run: `xcode-select --install` in your command line. | |
109 | * run `brew tap homebrew/versions; brew install gcc48 --use-llvm` to install gcc 4.8 (or higher). | |
110 | * run `brew install rocksdb` | |
111 | ||
11fdf7f2 TL |
112 | * **FreeBSD** (11.01): |
113 | ||
114 | * You can either install RocksDB from the Ports system using `cd /usr/ports/databases/rocksdb && make install`, or you can follow the details below to install dependencies and compile from source code: | |
115 | ||
116 | * Install the dependencies for RocksDB: | |
117 | ||
118 | export BATCH=YES | |
119 | cd /usr/ports/devel/gmake && make install | |
120 | cd /usr/ports/devel/gflags && make install | |
121 | ||
122 | cd /usr/ports/archivers/snappy && make install | |
123 | cd /usr/ports/archivers/bzip2 && make install | |
124 | cd /usr/ports/archivers/liblz4 && make install | |
125 | cd /usr/ports/archivesrs/zstd && make install | |
126 | ||
127 | cd /usr/ports/devel/git && make install | |
128 | ||
129 | ||
130 | * Install the dependencies for RocksJava (optional): | |
131 | ||
132 | export BATCH=yes | |
133 | cd /usr/ports/java/openjdk7 && make install | |
134 | ||
135 | * Build RocksDB from source: | |
136 | cd ~ | |
137 | git clone https://github.com/facebook/rocksdb.git | |
138 | cd rocksdb | |
139 | gmake static_lib | |
140 | ||
141 | * Build RocksJava from source (optional): | |
142 | cd rocksdb | |
143 | export JAVA_HOME=/usr/local/openjdk7 | |
144 | gmake rocksdbjava | |
145 | ||
146 | * **OpenBSD** (6.3/-current): | |
147 | ||
148 | * As RocksDB is not available in the ports yet you have to build it on your own: | |
149 | ||
150 | * Install the dependencies for RocksDB: | |
151 | ||
152 | pkg_add gmake gflags snappy bzip2 lz4 zstd git jdk bash findutils gnuwatch | |
153 | ||
154 | * Build RocksDB from source: | |
155 | ||
156 | cd ~ | |
157 | git clone https://github.com/facebook/rocksdb.git | |
158 | cd rocksdb | |
159 | gmake static_lib | |
160 | ||
161 | * Build RocksJava from source (optional): | |
162 | ||
163 | cd rocksdb | |
164 | export JAVA_HOME=/usr/local/jdk-1.8.0 | |
165 | export PATH=$PATH:/usr/local/jdk-1.8.0/bin | |
166 | gmake rocksdbjava | |
167 | ||
7c673cae FG |
168 | * **iOS**: |
169 | * Run: `TARGET_OS=IOS make static_lib`. When building the project which uses rocksdb iOS library, make sure to define two important pre-processing macros: `ROCKSDB_LITE` and `IOS_CROSS_COMPILE`. | |
170 | ||
171 | * **Windows**: | |
172 | * For building with MS Visual Studio 13 you will need Update 4 installed. | |
173 | * Read and follow the instructions at CMakeLists.txt | |
11fdf7f2 TL |
174 | * Or install via [vcpkg](https://github.com/microsoft/vcpkg) |
175 | * run `vcpkg install rocksdb:x64-windows` | |
7c673cae FG |
176 | |
177 | * **AIX 6.1** | |
178 | * Install AIX Toolbox rpms with gcc | |
179 | * Use these environment variables: | |
180 | ||
181 | export PORTABLE=1 | |
182 | export CC=gcc | |
183 | export AR="ar -X64" | |
184 | export EXTRA_ARFLAGS=-X64 | |
185 | export EXTRA_CFLAGS=-maix64 | |
186 | export EXTRA_CXXFLAGS=-maix64 | |
187 | export PLATFORM_LDFLAGS="-static-libstdc++ -static-libgcc" | |
188 | export LIBPATH=/opt/freeware/lib | |
189 | export JAVA_HOME=/usr/java8_64 | |
190 | export PATH=/opt/freeware/bin:$PATH | |
191 | ||
192 | * **Solaris Sparc** | |
193 | * Install GCC 4.8.2 and higher. | |
194 | * Use these environment variables: | |
195 | ||
196 | export CC=gcc | |
197 | export EXTRA_CFLAGS=-m64 | |
198 | export EXTRA_CXXFLAGS=-m64 | |
199 | export EXTRA_LDFLAGS=-m64 | |
200 | export PORTABLE=1 | |
201 | export PLATFORM_LDFLAGS="-static-libstdc++ -static-libgcc" | |
202 |