Toolchain » History » Revision 18
Revision 17 (fixeria, 05/11/2019 01:20 AM) → Revision 18/23 (fixeria, 05/14/2019 08:43 AM)
h1. Toolchain 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. h3. Binary distribution You can use a pre-compiled toolchain provided by your GNU/Linux distribution. For Debian based distributions (Ubuntu, Linux Mint, etc.), use the following command: <pre> $ sudo apt install gcc-arm-none-eabi </pre> For ArchLinux (https://www.archlinux.org/packages/community/x86_64/arm-none-eabi-gcc/): <pre> $ sudo pacman -S arm-none-eabi-gcc </pre> h3. Build one from source If you want to build your own toolchain, known to be working with [[OsmocomBB]], see here: [[GnuArmToolchain]]. This is the best option to get a fairly recent GCC, and this is the option used by several [[OsmocomBB]] developers. h3. Building old branches 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. Please follow the build instructions at: https://github.com/axilirator/gnu-arm-installer/ 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. This issue has been fixed in master: http://cgit.osmocom.org/osmocom-bb/commit/?id=a903b3c1ee27047c79728b18ff6340d23d1aad2e. h3. Build in Docker (dockcross) Please refer: https://github.com/dockcross/dockcross <pre> $ git clone https://github.com/dockcross/dockcross $ cd dockcross/ $ mkdir build/ $ docker run --rm dockcross/linux-armv7 > build/dockcross $ chmod +x build/dockcross </pre> Unfortunately, *I didn't (yet) manage to build the firmware using this toolchain*. Here is what I tried: <pre> $ cd osmocom-bb/src/ $ $HOME/dockcross/build/dockcross make firmware </pre> If you know how to proceed, please update this section. h3. Mac OS X Apparently the arm-elf-gcc 4.3.2 from ports for MacOS X can compile the firmware 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_. If you omit the links, there will be unresolvable references to symbols in the libraries.