Browse Source

Merge pull request #321 from scrrrapy/fedora-docs

Fedora/Centos docs to build from source
pull/326/head
orignal 9 years ago
parent
commit
c8c2c4d376
  1. 142
      docs/build_notes_unix.md

142
docs/build_notes_unix.md

@ -1,46 +1,90 @@
Building on Unix systems 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 This doc is trying to cover:
* mkdir -p 'i2pd/build/tmp' && cd 'i2pd/build/tmp' * [Debian/Ubuntu](#debianubuntu) (contains packaging instructions)
* cmake -DCMAKE_BUILD_TYPE=Release <more options> .. * [Fedora/Centos](#fedoracentos)
* make * [FreeBSD](#freebsd)
* make install
Available cmake options: Make sure you have all required dependencies for your system successfully installed.
* CMAKE_BUILD_TYPE -- build profile (Debug/Release) If so then we are ready to go!
* WITH_AESNI -- AES-NI support (ON/OFF) Let's clone the repository and start building the i2pd:
* WITH_HARDENING -- enable hardening features (ON/OFF) (gcc only) ```bash
* WITH_BINARY -- build i2pd itself git clone https://github.com/PurpleI2P/i2pd.git
* WITH_LIBRARY -- build libi2pd cd i2pd/build
* WITH_STATIC -- build static versions of library and i2pd binary cmake -DCMAKE_BUILD_TYPE=Release # more options could be passed, see "CMake Options"
* WITH_UPNP -- build with UPnP support (requires libupnp) make
* WITH_PCH -- use pre-compiled header (experimental, speeds up build) ```
After successfull build i2pd could be installed with:
```bash
make install
```
Debian/Ubuntu Debian/Ubuntu
------------- -------------
For building from source on debian system you will need the following "-dev" packages: You will need a compiler and other tools that could be installed with `build-essential` package:
```bash
* libboost-chrono-dev sudo apt-get install build-essential
* libboost-date-time-dev ```
* libboost-filesystem-dev
* libboost-program-options-dev Also you will need a bunch of development libraries:
* libboost-regex-dev ```bash
* libboost-system-dev sudo apt-get install \
* libboost-thread-dev libboost-chrono-dev \
* libssl-dev (e.g. openssl) libboost-date-time-dev \
* zlib1g-dev (libssl-dev already depends on it) libboost-filesystem-dev \
* libminiupnpc-dev (optional, if WITH_UPNP=ON) 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: 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
> ```
apt-get install build-essential fakeroot devscripts Also you will need a bunch of development libraries
cd i2pd ```bash
debuild --no-tgz-check # building from git repo 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 FreeBSD
------- -------
@ -49,17 +93,35 @@ Branch 9.X has gcc v4.2, that knows nothing about required c++11 standart.
Required ports: Required ports:
* devel/cmake * `devel/cmake`
* devel/boost-libs * `devel/boost-libs`
* lang/gcc47 # or later version * `lang/gcc47`(or later version)
To use newer compiler you should set these variables:
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, 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. 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
```

Loading…
Cancel
Save