sidebar_position | slug |
---|---|
2 |
/build_from_source |
Infinity can only be compiled natively on Linux. If your operating system is not Linux, build it using Docker.
- Build from source on Linux using Docker
- Build from source on Ubuntu 22.04
- Build from source on Ubuntu 23.10
Build the whole project, especially the link stage, requires much RAM. The host may become unresponsive due to the very slow kernel oom killer. To lessen the chances of it happening, it is recommended to install earlyoom. Furthermore, you need to tell cmake to limit the concurrent link process:
-DCMAKE_JOB_POOL_LINK:STRING=link_pool -DCMAKE_JOB_POOLS:STRING=link_pool=2
The recommended link_pool
size is:
- 1 for 6GB
- 2 for 16GB
- 3 for 32GB
The CMAKE_BUILD_TYPE
(cmake build type) can be one of:
Debug
: no inline, with symbol info, with address sanitize, normally ~10x slower thanRelWithDebInfo
andRelease
. This aims daily development.RelWithDebInfo
: optimize with-O2
, with symbol info. This aims performance analysis.Release
: optimize with-O3
, without symbol info. The executables built out are much smaller thanRelWithDebInfo
. This aims project releases.
Following procedures use Debug
. Change it as you need.
This section provides instructions on building Infinity from source on Linux using Docker.
git clone https://github.com/infiniflow/infinity.git
cd infinity && mkdir cmake-build-debug
TZ=$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}')
docker run -d --name infinity_build --network=host -e TZ=$TZ -v $PWD:/infinity infiniflow/infinity_builder:centos7
docker exec infinity_build bash -c "cd /infinity/cmake-build-debug && cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=ON .. && cmake --build ."
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
ulimit -n 500000
./cmake-build-debug/src/infinity
This section provides instructions on building Infinity from source on Ubuntu 22.04.
sudo apt update && sudo apt install git wget unzip software-properties-common
wget https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-x86_64.tar.gz
tar zxvf cmake-3.29.0-linux-x86_64.tar.gz
sudo cp -rf cmake-3.29.0-linux-x86_64/bin/* /usr/local/bin && sudo cp -rf cmake-3.29.0-linux-x86_64/share/* /usr/local/share && rm -rf cmake-3.29.0-linux-x86_64
wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip
unzip ninja-linux.zip && sudo cp ninja /usr/local/bin && rm ninja
echo 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' | sudo tee /etc/apt/sources.list.d/llvm17.list
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
sudo add-apt-repository -P ppa:ubuntu-toolchain-r/test
sudo add-apt-repository -P ppa:mhier/libboost-latest
sudo apt update && sudo apt install g++-13 clang-17 clang-tools-17 flex libboost1.81-dev liblz4-dev libevent-dev liburing-dev libjemalloc-dev
ln -s /usr/lib/llvm-17/bin/clang-scan-deps /usr/bin/clang-scan-deps
ln -s /usr/bin/clang-format-17 /usr/bin/clang-format
ln -s /usr/bin/clang-tidy-17 /usr/bin/clang-tidy
ln -s /usr/bin/llvm-symbolizer-17 /usr/bin/llvm-symbolizer
git clone https://github.com/infiniflow/infinity.git
you need first install simde
if on arm, note we need v0.7.4+
version for simde
sudo apt install libsimde-dev
If the installed version is under v0.7.4, you can download the include files directly from github and replace it.
git config --global --add safe.directory infinity
cd infinity && mkdir cmake-build-debug && cd cmake-build-debug
export CC=/usr/bin/clang-17
export CXX=/usr/bin/clang++-17
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=ON ..
cmake --build .
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
ulimit -n 500000
./cmake-build-debug/src/infinity
This section provides instructions on building Infinity from source on Ubuntu 23.10.
sudo apt update && sudo apt install -y git wget
wget https://github.com/Kitware/CMake/releases/download/v3.29.0/cmake-3.29.0-linux-x86_64.tar.gz
tar zxvf cmake-3.29.0-linux-x86_64.tar.gz
sudo cp -rf cmake-3.29.0-linux-x86_64/bin/* /usr/local/bin && sudo cp -rf cmake-3.29.0-linux-x86_64/share/* /usr/local/share && rm -rf cmake-3.29.0-linux-x86_64
sudo apt install -y ninja-build clang-17 clang-tools-17 llvm-17 flex libboost1.81-dev liblz4-dev libevent-dev liburing-dev libjemalloc-dev
ln -s /usr/lib/llvm-17/bin/clang-scan-deps /usr/bin/clang-scan-deps
ln -s /usr/bin/clang-format-17 /usr/bin/clang-format
ln -s /usr/bin/clang-tidy-17 /usr/bin/clang-tidy
ln -s /usr/bin/llvm-symbolizer-17 /usr/bin/llvm-symbolizer
git clone https://github.com/infiniflow/infinity.git
git config --global --add safe.directory infinity
cd infinity && mkdir cmake-build-debug && cd cmake-build-debug
export CC=/usr/bin/clang-17
export CXX=/usr/bin/clang++-17
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_VERBOSE_MAKEFILE=ON ..
cmake --build .
sudo mkdir -p /var/infinity && sudo chown -R $USER /var/infinity
ulimit -n 500000
./cmake-build-debug/src/infinity