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.
as of 2013-10-20, if you use a 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.
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:
$ sudo apt install gcc-arm-none-eabi
$ sudo pacman -S arm-none-eabi-gcc
Build one from source¶
This is the best option to get a fairly recent GCC, and this is the option used by several OsmocomBB developers.
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/
Mac OS X¶
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.
If you omit the links, there will be unresolvable references to symbols in the libraries.