i2pd/docs/build_notes_unix.md

3.7 KiB

Building on Unix systems

First of all we need to make sure that all dependencies are satisfied.

This doc is trying to cover:

Make sure you have all required dependencies for your system successfully installed.

If so then we are ready to go! Let's clone the repository and start building the i2pd:

git clone https://github.com/PurpleI2P/i2pd.git
cd i2pd/build
cmake -DCMAKE_BUILD_TYPE=Release # more options could be passed, see "CMake Options"
make

After successfull build i2pd could be installed with:

make install

Debian/Ubuntu

You will need a compiler and other tools that could be installed with build-essential package:

sudo apt-get install build-essential

Also you will need a bunch of development libraries:

sudo apt-get install \
    libboost-chrono-dev \
    libboost-date-time-dev \
    libboost-filesystem-dev \
    libboost-program-options-dev \
    libboost-regex-dev \
    libboost-system-dev \
    libboost-thread-dev \
    libssl-dev

If you need UPnP support (don't forget to run CMake with WITH_UPNP=ON) miniupnpc development library should be installed:

sudo apt-get install libminiupnpc-dev

You may also build deb-package with the following:

sudo apt-get install fakeroot devscripts
cd i2pd
debuild --no-tgz-check

Fedora/Centos

You will need a compiler and other tools to perform a build:

sudo yum install make cmake gcc gcc-c++

Latest Fedora system using DNF instead of YUM by default, you may prefer to use DNF, but YUM should be ok

Centos 7 has CMake 2.8.11 in the official repositories that too old to build i2pd, CMake >=2.8.12 is required You could build CMake for Centos manualy(WARNING there are a lot of build dependencies!):

wget https://kojipkgs.fedoraproject.org/packages/cmake/2.8.12/3.fc21/src/cmake-2.8.12-3.fc21.src.rpm
yum-builddep cmake-2.8.12-3.fc21.src.rpm
rpmbuild --rebuild cmake-2.8.12-3.fc21.src.rpm
yum install ~/rpmbuild/RPMS/x86_64/cmake-2.8.12-3.el7.centos.x86_64.rpm

Also you will need a bunch of development libraries

sudo yum install boost-devel openssl-devel

If you need UPnP support (don't forget to run CMake with WITH_UPNP=ON) miniupnpc development library should be installed:

miniupnpc-devel

FreeBSD

Branch 9.X has gcc v4.2, that knows nothing about required c++11 standart.

Required ports:

  • devel/cmake
  • devel/boost-libs
  • lang/gcc47(or later version)

To use newer compiler you should set these variables(replace "47" with your actual gcc version):

export CC=/usr/local/bin/gcc47
export CXX=/usr/local/bin/g++47

Branch 10.X has more reliable clang version, that can finally build i2pd, but I still recommend to use gcc, otherwise you will fight it's bugs by your own.

CMake Options

Available CMake options(each option has a for of <key>=<value>, for more information see man 1 cmake):

  • CMAKE_BUILD_TYPE build profile (Debug/Release)
  • WITH_BINARY build i2pd itself
  • WITH_LIBRARY build libi2pd
  • WITH_STATIC build static versions of library and i2pd binary
  • WITH_UPNP build with UPnP support (requires libupnp)
  • WITH_AESNI build with AES-NI support (ON/OFF)
  • WITH_HARDENING enable hardening features (ON/OFF) (gcc only)
  • WITH_PCH use pre-compiled header (experimental, speeds up build)

Also there is -L flag for CMake that could be used to list current cached options:

cmake -L