mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2024-10-31 09:20:38 +00:00
128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
Building on Unix systems
|
|
=============================
|
|
|
|
First of all we need to make sure that all dependencies are satisfied.
|
|
|
|
This doc is trying to cover:
|
|
* [Debian/Ubuntu](#debianubuntu) (contains packaging instructions)
|
|
* [Fedora/Centos](#fedoracentos)
|
|
* [FreeBSD](#freebsd)
|
|
|
|
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:
|
|
```bash
|
|
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:
|
|
```bash
|
|
make install
|
|
```
|
|
|
|
Debian/Ubuntu
|
|
-------------
|
|
|
|
You will need a compiler and other tools that could be installed with `build-essential` package:
|
|
```bash
|
|
sudo apt-get install build-essential
|
|
```
|
|
|
|
Also you will need a bunch of development libraries:
|
|
```bash
|
|
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:
|
|
```bash
|
|
sudo apt-get install libminiupnpc-dev
|
|
```
|
|
|
|
You may also build deb-package with the following:
|
|
```bash
|
|
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:
|
|
```bash
|
|
sudo yum install make cmake gcc gcc-c++
|
|
```
|
|
|
|
*Latest Fedora system using [DNF](https://en.wikipedia.org/wiki/DNF_(software)) 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!):
|
|
> ```bash
|
|
> 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
|
|
```bash
|
|
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:
|
|
```bash
|
|
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):
|
|
```bash
|
|
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:
|
|
```bash
|
|
cmake -L
|
|
```
|