|
|
|
@ -1,46 +1,60 @@
@@ -1,46 +1,60 @@
|
|
|
|
|
Building on Unix systems |
|
|
|
|
============================= |
|
|
|
|
|
|
|
|
|
Common build/install process from sources: |
|
|
|
|
First of all we need to make sure that all dependencies are satisfied. |
|
|
|
|
|
|
|
|
|
* git clone https://github.com/PurpleI2P/i2pd.git |
|
|
|
|
* mkdir -p 'i2pd/build/tmp' && cd 'i2pd/build/tmp' |
|
|
|
|
* cmake -DCMAKE_BUILD_TYPE=Release <more options> .. |
|
|
|
|
* make |
|
|
|
|
* make install |
|
|
|
|
This doc is trying to cover: |
|
|
|
|
* [Debian/Ubuntu](#debianubuntu) (contains packaging instructions) |
|
|
|
|
* [FreeBSD](#freebsd) |
|
|
|
|
|
|
|
|
|
Available cmake options: |
|
|
|
|
Make sure you have all required dependencies for your system successfully installed. |
|
|
|
|
|
|
|
|
|
* CMAKE_BUILD_TYPE -- build profile (Debug/Release) |
|
|
|
|
* WITH_AESNI -- AES-NI support (ON/OFF) |
|
|
|
|
* WITH_HARDENING -- enable hardening features (ON/OFF) (gcc only) |
|
|
|
|
* 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_PCH -- use pre-compiled header (experimental, speeds up build) |
|
|
|
|
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 |
|
|
|
|
------------- |
|
|
|
|
|
|
|
|
|
For building from source on debian system you will need the following "-dev" packages: |
|
|
|
|
|
|
|
|
|
* 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 (e.g. openssl) |
|
|
|
|
* zlib1g-dev (libssl-dev already depends on it) |
|
|
|
|
* libminiupnpc-dev (optional, if WITH_UPNP=ON) |
|
|
|
|
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: |
|
|
|
|
|
|
|
|
|
apt-get install build-essential fakeroot devscripts |
|
|
|
|
cd i2pd |
|
|
|
|
debuild --no-tgz-check # building from git repo |
|
|
|
|
```bash |
|
|
|
|
sudo apt-get install fakeroot devscripts |
|
|
|
|
cd i2pd |
|
|
|
|
debuild --no-tgz-check |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
FreeBSD |
|
|
|
|
------- |
|
|
|
@ -49,17 +63,35 @@ Branch 9.X has gcc v4.2, that knows nothing about required c++11 standart.
@@ -49,17 +63,35 @@ 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: |
|
|
|
|
* `devel/cmake` |
|
|
|
|
* `devel/boost-libs` |
|
|
|
|
* `lang/gcc47`(or later version) |
|
|
|
|
|
|
|
|
|
export CC=/usr/local/bin/gcc47 |
|
|
|
|
export CXX=/usr/local/bin/g++47 |
|
|
|
|
|
|
|
|
|
Replace "47" with your actual gcc 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 |
|
|
|
|
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 |
|
|
|
|
``` |
|
|
|
|