Line 19:
Line 19:
=== Compiler and C Library ===
=== Compiler and C Library ===
−
CRIU is mostly written in C and the build system is based on Makefiles. Thus just install standard <code>gcc</code> and <code>make</code> sets.
+
CRIU is mostly written in C and the build system is based on Makefiles. Thus just install standard <code>gcc</code> and <code>make</code> packages (on Debian, <code>[https://packages.debian.org/build-essential build-essential]</code> will pull in both at once).
−
Some additional steps are required if you're using Debian.
+
If you are cross compiling for ARM, use distribution packages or download prebuilt toolchains from Linaro.
−
−
* For native compilation on Debian based systems, install the <code>build-essential</code> package.
−
* On a modern Debian based x86_64 you will need to install the <code>lib32stdc++6</code> and <code>lib32z1</code> packages.
−
−
For cross compiling for ARM and AArch64, the Linaro prebuilt toolchains are a good choice which are ia32 architecture binaries.
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
−
Installing them is like this.
+
Downloading Linaro toolchains
<div class="mw-collapsible-content">
<div class="mw-collapsible-content">
+
sudo apt-get install lib32stdc++6 lib32z1 # These are ia32 binaries
mkdir -p deps/`uname -m`-linux-gnu
mkdir -p deps/`uname -m`-linux-gnu
cd deps
cd deps
Line 43:
Line 39:
=== Protocol Buffers ===
=== Protocol Buffers ===
−
CRIU uses the [https://developers.google.com/protocol-buffers/ Google Protocol Buffers] to read and write [[images]] and thus requires [https://github.com/protobuf-c/protobuf-c C language bindings]. The <code>protoc</code> tool is required at build time and the <code>libprotobuf-c.so</code> is required at build and run time. [[CRIT]] also uses python language bindings for protocol buffers and requires the <code>descriptor.proto</code> file from devel set that can be typically found in the <code>protobuf-devel</code> package.
+
CRIU uses the [https://developers.google.com/protocol-buffers/ Google Protocol Buffers] to read and write [[images]] and thus requires [https://github.com/protobuf-c/protobuf-c C language bindings]. The <code>protoc</code> tool is required at build time and the <code>libprotobuf-c.so</code> shared object is required at build and run time. [[CRIT]] also uses python language bindings for protocol buffers and requires the <code>descriptor.proto</code> file typically provided by a distribution's protobuf development package.
==== Distribution Packages ====
==== Distribution Packages ====
Line 51:
Line 47:
** <code>protobuf</code>
** <code>protobuf</code>
** <code>protobuf-c</code>
** <code>protobuf-c</code>
−
** <code>protobuf-python</code>
+
** <code>protobuf-c-devel</code>
** <code>protobuf-compiler</code>
** <code>protobuf-compiler</code>
** <code>protobuf-devel</code>
** <code>protobuf-devel</code>
−
** <code>protobuf-c-devel</code>
+
** <code>protobuf-python</code>
* Debian package names
* Debian package names
+
** <code>libprotobuf-c0-dev</code>
** <code>protobuf-c-compiler</code>
** <code>protobuf-c-compiler</code>
−
** <code>libprotobuf-c0-dev</code>
** <code>protobuf-compiler</code>
** <code>protobuf-compiler</code>
** <code>protobuf-python</code>
** <code>protobuf-python</code>
==== Building Protocol Buffers From Source ====
==== Building Protocol Buffers From Source ====
−
If you would like to build from source, you can use the following commands to obtain the source code repositories, configure, and build the code. On a Debian based system, you may have to do <code>autoconf curl g++ libtool</code> first.
+
If you would like to build from source, you can use the following commands to obtain the source code repositories, configure, and build the code. On a Debian based system, you may have to install <code>autoconf curl g++ libtool</code> packages first.
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">
<div class="toccolours mw-collapsible mw-collapsed" style="width:800px">