Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
development:toolchain [2015/08/18 13:31]
hess
development:toolchain [2020/03/19 10:46] (current)
fachet
Line 2: Line 2:
 Many or even most tasks can be implemented using the integrated [[sdk:sdk | SDK]] with the C-like scripting language and the router API functions. ​ Many or even most tasks can be implemented using the integrated [[sdk:sdk | SDK]] with the C-like scripting language and the router API functions. ​
 ===== Toolchain ===== ===== Toolchain =====
-However, if for some reasons you want or have to cross-compile a C application,​ you will find  +However, if for some reasons you want or have to cross-compile a C application,​ you will find the different ​ 
-[[ftp://​share.netmodule.com/​router/​public/​toolchain | cross-compilation ​toolchain ​]] on our FTP server.  +[[ftp://​share.netmodule.com/​router/​public/​toolchain | Cross-compilation ​toolchains ​]] on our FTP server. 
-This toolchain ​consists of a compiler ([[https://​gcc.gnu.org/​ | GNU Compiler Collection (GCC)]] version 4.4.5), ​+The toolchains ​consists of a compiler ([[https://​gcc.gnu.org/​ | GNU Compiler Collection (GCC)]] version 4.4.5), ​
 a assembler and linker ([[https://​www.sourceware.org/​binutils/​ | GNU binutils]]) and  a assembler and linker ([[https://​www.sourceware.org/​binutils/​ | GNU binutils]]) and 
 a [[wp>C standard library]] ([[http://​www.uclibc.org/​ | uClibc]] version 0.9.31), all built to produce binaries ​ a [[wp>C standard library]] ([[http://​www.uclibc.org/​ | uClibc]] version 0.9.31), all built to produce binaries ​
-for NetModule Routers ​with Freescale/Motorola ​PowerPC ​(MPC830x) CPUs, namely ​NB1600, NB2700, NB2710, NB3700and NB3710.+for NetModule Routers
 + 
 +The following Cross-Compilation toolchains are available:​ 
 + 
 +  * [[ftp://​share.netmodule.com/​router/​public/​toolchain/​netbox-ppcPowerPC]] / NB1600, NB2700, NB2710, NB3700 and NB3710 
 +  * [[ftp://​share.netmodule.com/​router/​public/​toolchain/​netbolt-arm/​ | ARM]] / NB1800, NB1810, NB2800, NB3701, NB3711 and NB3800 
 +  * [[ftp://​share.netmodule.com/​router/​public/​toolchain/​netbird-arm/​ | ARM]] / NB1601, NB800 
  
 For further introduction to GCC please refer to [[http://​www.tunl.duke.edu/​documents/​public/​root/​material/​5/​An_Introduction_to_GCC-Brian_Gough.pdf|An Introduction to GCC]], chapter 2 and following ones. For further introduction to GCC please refer to [[http://​www.tunl.duke.edu/​documents/​public/​root/​material/​5/​An_Introduction_to_GCC-Brian_Gough.pdf|An Introduction to GCC]], chapter 2 and following ones.
  
 +**Please be ware that NetModule can not support systems with customer extensions.**
 ==== Getting Started ==== ==== Getting Started ====
  
-1. Download and install the toolchain on your Linux x86 PC+1. Download and install the corresponding ​toolchain ​from above on your Linux x86 PC
 <code bash> <code bash>
-wget ftp://​share.netmodule.com/​router/​public/​toolchain/​toolchain-ppc-4.4.5-x86_64.tar.bz2+wget ftp://​share.netmodule.com/​router/​public/​toolchain/netbox-ppc/​toolchain-ppc-4.4.5-x86_64.tar.bz2
 tar -xvf toolchain-ppc-4.4.5-x86_64.tar.bz2 -C /opt tar -xvf toolchain-ppc-4.4.5-x86_64.tar.bz2 -C /opt
 export PATH=$PATH:/​opt/​toolchain-ppc-4.4.5-x86_64/​bin export PATH=$PATH:/​opt/​toolchain-ppc-4.4.5-x86_64/​bin
Line 42: Line 50:
  
 3. Compile it 3. Compile it
 +
 +__PowerPC:​__
 <code bash> <code bash>
 powerpc-openwrt-linux-gcc -Wall hello.c -o hello powerpc-openwrt-linux-gcc -Wall hello.c -o hello
 </​code>​ </​code>​
  
-4. Copy it to the router (e.g. via SCP) and run it.+__ARM:__ 
 +<code bash> 
 +arm-openwrt-linux-gcc -Wall hello.c -o hello 
 +</​code>​
  
-===== Oracle Virtual Box Image ===== +4. Copy it to the router ​(e.gvia SCPand run it.
-For small projects or if you don't have a Linux environement you can also use the very small [[ftp://​public:​public@share.netmodule.com/​router/​public/​toolchain/​NetModule_NB_PowerPC_Compile.ova |Virtual Box Image]]The image uses Tiny Core Linux (http://​tinycorelinux.net/​). Please read the starup message carefully+
  
-===== Example: Compile a program from Source ​=====+==== Example: Compile a program from Source ====
 This example shows you how to compile a program from source. The program in this example is [[https://​stedolan.github.io/​jq/​download/​ | jq]] This example shows you how to compile a program from source. The program in this example is [[https://​stedolan.github.io/​jq/​download/​ | jq]]
  
 +__PowerPC__
 <code bash> <code bash>
 wget https://​github.com/​stedolan/​jq/​releases/​download/​jq-1.5/​jq-1.5.tar.gz wget https://​github.com/​stedolan/​jq/​releases/​download/​jq-1.5/​jq-1.5.tar.gz
Line 61: Line 74:
 make make
 </​code>​ </​code>​
 +
 +__ARM__
 +<code bash>
 +wget https://​github.com/​stedolan/​jq/​releases/​download/​jq-1.5/​jq-1.5.tar.gz
 +tar -xzf jq-1.5.tar.gz
 +cd jq-1.5
 +CC=arm-openwrt-linux-gcc ./configure --host=arm --disable-maintainer-mode
 +make
 +</​code>​
 +
 +**Note:** Patch required to fix y0, y1, j0 and j1 related build issue on uClibc \\
 +Our default uClibc configuration does not have DO_XSI_MATH=y,​ so it lacks certain math functions. jq generates some wrappers for the libm functions, even for functions that are not actually used by jq. By simply removing those wrappers, we get jq to build on uClibc that have DO_XSI_MATH disabled.
  
 We can now check the file type and we see, that the program has been compiled for PowerPC. Now we can copy ''​jq''​ to NB1600 and run it. We can now check the file type and we see, that the program has been compiled for PowerPC. Now we can copy ''​jq''​ to NB1600 and run it.
Line 67: Line 92:
 jq: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked (uses shared libs), with unknown capability 0x41000000 = 0x13676e75, with unknown capability 0x10000 = 0xb0402, not stripped jq: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV), dynamically linked (uses shared libs), with unknown capability 0x41000000 = 0x13676e75, with unknown capability 0x10000 = 0xb0402, not stripped
 </​code>​ </​code>​
 +
 +===== Oracle Virtual Box Image =====
 +For small projects or if you don't have a Linux environement you can also use the very small [[ftp://​share.netmodule.com/​router/​public/​toolchain/​netbox-ppc/​NetModule_NB_PowerPC_Compile_1_3.ova |Virtual Box Image]]. The image uses Tiny Core Linux (http://​tinycorelinux.net/​). Please read the startup message carefully. This is only valid for the NB1600, NB2700/​2710,​ NB3700/​3710.