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"> |