Project

General

Profile

Toolchain » History » Version 16

fixeria, 05/11/2019 01:17 AM

1 12 fixeria
h1. Toolchain
2 1 tsaitgaist
3 12 fixeria
To compile the target firmware for [[OsmocomBB]] or [[SIMtrace:]], you need a GNU Toolchain for ARM. There are various pre-compiled toolchains available, but not all of them will produce working firmware. We're trying to support all these configurations, but it might take a while to identify the source of a problem. If you have persistent errors when compiling, try using a different package.
4 5 tsaitgaist
5 12 fixeria
h3. Binary distribution
6 1 tsaitgaist
7 12 fixeria
You can use a pre-compiled toolchain provided by your GNU/Linux distribution.
8 1 tsaitgaist
9 12 fixeria
For Debian based distributions (Ubuntu, Linux Mint, etc.), use the following command:
10 1 tsaitgaist
11 12 fixeria
<pre>
12
$ sudo apt install gcc-arm-none-eabi
13
</pre>
14 1 tsaitgaist
15 12 fixeria
For ArchLinux (https://www.archlinux.org/packages/community/x86_64/arm-none-eabi-gcc/):
16 11 tsaitgaist
17 12 fixeria
<pre>
18
$ sudo pacman -S arm-none-eabi-gcc
19
</pre>
20 11 tsaitgaist
21 16 fixeria
h3. Build in Docker (dockcross)
22
23
Please refer: https://github.com/dockcross/dockcross
24
25
<pre>
26
$ git clone https://github.com/dockcross/dockcross
27
$ cd dockcross/
28
$ mkdir build/
29
$ docker run --rm dockcross/linux-armv7 > build/dockcross
30
$ chmod +x build/dockcross
31
</pre>
32
33
Unfortunately, I didn't (yet) manage to build the firmware using this toolchain. Here is what I tried:
34
35
<pre>
36
$ cd osmocom-bb/src/
37
$ $HOME/dockcross/build/dockcross make firmware
38
</pre>
39
40
If you know how to proceed, please update this section.
41
42 12 fixeria
h3. Build one from source
43 1 tsaitgaist
44 12 fixeria
If you want to build your own toolchain, known to be working with [[OsmocomBB]], see here: [[GnuArmToolchain]].
45 6 tsaitgaist
46 12 fixeria
This is the best option to get a fairly recent GCC, and this is the option used by several [[OsmocomBB]] developers.
47
48 13 fixeria
h3. Building old branches
49
50 14 fixeria
If you need to build the *firmware from old unmaintained branches* (sylvain/burst_ind, sylvain/testing, jolly/testing, etc.), an older version of toolchain is needed.
51 1 tsaitgaist
52
Please follow the build instructions at: https://github.com/axilirator/gnu-arm-installer/
53 15 fixeria
54
When using toolchain with GCC >=4.8, the firmware can be compiled, but will hang as soon as you want to sync to an ARFCN.
55
This issue has been fixed in master: http://cgit.osmocom.org/osmocom-bb/commit/?id=a903b3c1ee27047c79728b18ff6340d23d1aad2e.
56 13 fixeria
57 12 fixeria
h3. Mac OS X
58 1 tsaitgaist
59
Apparently the arm-elf-gcc 4.3.2 from ports for mac os x can compile the sourcecode as well after symlinking /opt/local/bin/arm-elf-ranlib to /opt/local/bin/arm-elf-linux-ranlib and /opt/local/bin/arm-elf-strip to /opt/local/bin/arm-elf-linux-strip.
60
If you omit the links, there will be unresolvable references to symbols in the libraries.
Add picture from clipboard (Maximum size: 48.8 MB)