i2pd/docs/building/unix.md

149 lines
3.9 KiB
Markdown
Raw Normal View History

2016-01-12 07:18:17 +03:00
Building on Unix systems
=============================
2014-09-17 09:12:05 +04:00
First of all we need to make sure that all dependencies are satisfied.
2014-09-17 09:12:05 +04:00
This doc is trying to cover:
2016-10-16 14:04:59 +03:00
* [Debian/Ubuntu](#debian-ubuntu) (contains packaging instructions)
* [Fedora/Centos](#fedora-centos)
* [Fedora/Centos](#mac-os-x)
* [FreeBSD](#freebsd)
2014-09-17 09:12:05 +04:00
Make sure you have all required dependencies for your system successfully installed.
2014-09-17 09:12:05 +04:00
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"
2016-07-13 04:01:47 +03:00
make # you may add VERBOSE=1 to cmdline for debugging
```
After successfull build i2pd could be installed with:
```bash
make install
```
2016-08-05 21:06:06 +03:00
or you can just use 'make' once you have all dependencies (boost and openssl) installed
2016-02-16 23:07:56 +03:00
```bash
git clone https://github.com/PurpleI2P/i2pd.git
cd i2pd
make
```
2014-09-17 09:12:05 +04:00
Debian/Ubuntu
-------------
2014-09-17 09:12:05 +04:00
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-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
```
2014-09-17 09:12:05 +04:00
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*
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
```
2016-10-20 14:41:41 +03:00
> *Centos 7 has CMake 2.8.11 in the official repositories that too old to build i2pd, CMake >=2.8.12 is required.*
>
> But you can use cmake3 from the epel repository:
> ```bash
> yum install epel-release -y
> yum install make cmake3 gcc gcc-c++ miniupnpc-devel boost-devel openssl-devel -y
> cmake3 -DWITH_LIBRARY=OFF -DWITH_UPNP=ON -DWITH_HARDENING=ON -DBUILD_SHARED_LIBS:BOOL=OFF
> make
> ```
MAC OS X
--------
2016-10-16 14:04:59 +03:00
Requires [homebrew](http://brew.sh/)
```bash
brew install libressl boost
```
Then build:
```bash
make HOMEBREW=1
```
2014-09-17 09:12:05 +04:00
FreeBSD
-------
2016-02-27 23:44:36 +03:00
For 10.X use clang. You would also need boost and openssl ports.
Type gmake, it invokes Makefile.bsd, make necessary changes there is required.
2014-09-17 09:12:05 +04:00
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)
2014-09-17 09:12:05 +04:00
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
```
2014-09-17 09:12:05 +04:00
CMake Options
-------------
2016-08-12 19:43:59 +03:00
Available CMake options(each option has a form 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
```