Difference between revisions of "Ubuntu 16.04 LTS Toolchain"

From IGEP - ISEE Wiki

Jump to: navigation, search
(Created page with "==Before start== * Download and install Ubuntu 16.04 LTS ==Install the Toolchain== Before use the toolchain you need download and install it on your machine, you can do it wi...")
 
(Setup Multiarch)
Line 17: Line 17:
 
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted</pre>
 
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted</pre>
 
Note: armel is not provided in ubuntu 16.04 if you needed we suggested use debian stretch.
 
Note: armel is not provided in ubuntu 16.04 if you needed we suggested use debian stretch.
 +
 +
==Install apps, libraries or dev packages==
 +
To install a package of the non-default architecture just specify that architecture on the command line: <span id="line-100" class="anchor"></span><span id="line-101" class="anchor"></span><span id="line-102" class="anchor"></span>
 +
 +
<pre><span id="line-1-8" class="anchor"></span>apt-get install package:architecture</pre>
 +
That package's dependencies will be installed automatically for the correct architectures (same-arch library deps, machine-arch for other deps) <span id="line-104" class="anchor"></span>e.g <span id="line-105" class="anchor"></span><span id="line-106" class="anchor"></span><span id="line-107" class="anchor"></span>
 +
 +
<pre><span id="line-1-9" class="anchor"></span>apt-get install links:armhf</pre>
 +
<pre><span id="line-1-10" class="anchor"></span>dpkg -i package_version_architecture.deb
 +
<span id="line-2-1" class="anchor"></span>dpkg -r package:architecture</pre>
 +
===Installing cross-dependencies===
 +
To install build-dependencies of a package before cross-building: <span id="line-118" class="anchor"></span><span id="line-119" class="anchor"></span><span id="line-120" class="anchor"></span>
 +
 +
<pre><span id="line-1-11" class="anchor"></span>apt-get build-dep -a <arch> <package></pre>
 +
This only works when all the 'tools' packages depended-on are marked <tt>Multi-Arch: foreign</tt>, any depended-on libraries which are also needed on the BUILD machine, and -dev packages which are needed for both HOST and BUILD architectures are made co-installable ('Multi-Arch: same' with arch-qualified paths), and any exceptions to the default rules are marked <tt>package:any</tt> or <tt>package:native</tt> in the package source. This process is ongoing. <span id="line-123" class="anchor"></span><span id="line-124" class="anchor"></span>
 +
 +
When it doesn't work you can often get the dependencies installed with a manual apt-get line: <span id="line-125" class="anchor"></span>e.g instead of <span id="line-126" class="anchor"></span><span id="line-127" class="anchor"></span>
 +
 +
<pre><span id="line-1-12" class="anchor"></span>apt-get build-dep -a armhf acl</pre>
 +
, do<span id="line-128" class="anchor"></span><span id="line-129" class="anchor"></span><span id="line-130" class="anchor"></span>
 +
 +
<pre><span id="line-1-13" class="anchor"></span>apt-get install autoconf automake debhelper gettext libtool libattr1-dev:armhf</pre>
 +
 +
[[Toolchain]]

Revision as of 10:08, 9 March 2018

Before start

  • Download and install Ubuntu 16.04 LTS

Install the Toolchain

Before use the toolchain you need download and install it on your machine, you can do it with this command:

$ sudo apt-get install gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf g++-arm-linux-gnueabi g++-arm-linux-gnueabihf libc6-armel-cross libc6-armhf-cross libc6-dev-armhf-cross libc6-dev-armel-cross crossbuild-essential-armel crossbuild-essential-armhf qemu qemu-user-static binfmt-support build-essential

Setup Multiarch

It's recommended use Multiarch for add the headers, libraries that you can need for build ARM applications or libraries.

Add ARM hard float arch:

$ dpkg --add-architecture armhf

Modify apt sources and include arch repos:

deb [arch=i386,amd64] http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
deb [arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted

Note: armel is not provided in ubuntu 16.04 if you needed we suggested use debian stretch.

Install apps, libraries or dev packages

To install a package of the non-default architecture just specify that architecture on the command line:

<span id="line-1-8" class="anchor"></span>apt-get install package:architecture

That package's dependencies will be installed automatically for the correct architectures (same-arch library deps, machine-arch for other deps) e.g

<span id="line-1-9" class="anchor"></span>apt-get install links:armhf
<span id="line-1-10" class="anchor"></span>dpkg -i package_version_architecture.deb
<span id="line-2-1" class="anchor"></span>dpkg -r package:architecture

Installing cross-dependencies

To install build-dependencies of a package before cross-building:

<span id="line-1-11" class="anchor"></span>apt-get build-dep -a <arch> <package>

This only works when all the 'tools' packages depended-on are marked Multi-Arch: foreign, any depended-on libraries which are also needed on the BUILD machine, and -dev packages which are needed for both HOST and BUILD architectures are made co-installable ('Multi-Arch: same' with arch-qualified paths), and any exceptions to the default rules are marked package:any or package:native in the package source. This process is ongoing.

When it doesn't work you can often get the dependencies installed with a manual apt-get line: e.g instead of

<span id="line-1-12" class="anchor"></span>apt-get build-dep -a armhf acl

, do

<span id="line-1-13" class="anchor"></span>apt-get install autoconf automake debhelper gettext libtool libattr1-dev:armhf

Toolchain