Cross-compiling Rebol for your favorite embedded board
So, perhaps you found a nice gift package under the Christmas tree this year? Maybe it's a cute little embedded SoC (system-on-a-chip) board. Perhaps a Broadcom 2835 Raspberry Pi or TI OMAP Beaglebroad or Pandaboard? Cool.
Of course, the first thing you'll want to do after booting the board is to get Rebol running. It's easy, here's how.
To cross-compile Rebol you'll need the development toolchain and library header files for your SoC and Linux version. Usually you can download those from a website related to your specific board.
Next, figure out the paths to the embedded tools and includes (header files). For example on my box:
Assuming you already setup your R3 development environment (from github.com), you can now generate fresh R3 header files for your embedded linux using your local host environment (no crosstools yet):
carl@ub10:~/r3$ cd make carl@ub10:~/r3/make$ make make OS_ID=0.4.3 carl@ub10:~/r3/make$ make clean prep
Note that the "make make 0.4.3" regenerates a makefile that will work for most embedded linux toolchains. (See src/tools/systems.r) You'll see the prep step rebuild the necessary R3 header files:
./r3-make -qs ../src/tools/make-headers.r ------ Building headers ... REBOL Interface Library ... Function Prototypes 698 function prototypes ... Function Argument Enums ... REBOL Constants Strings ...
Now, you are ready to make R3 with your crosstools and includes:
carl@ub10:~/r3/make$ make TOOLS=/opt/raspi/bin/arm-linux- INCL=~/raspi-linux/include
It will take just a minute to compile and link...
make: Entering directory `/home/carl/r3/make' mkdir -p objs /opt/raspi/bin/arm-linux-gcc ../src/core/a-constants.c -c -DTO_LINUX -DREB_API -O2-fvisibility=hidden -I/home/carl/raspi-linux/include -I../src/include/ -o objs/a-constants.o /opt/raspi/bin/arm-linux-gcc ../src/core/a-globals.c -c -DTO_LINUX -DREB_API -O2 -fvisibility=hidden -I/home/carl/raspi-linux/include -I../src/include/ -o objs/a-globals.o ... /opt/raspi/bin/arm-linux-gcc -o r3 objs/a-constants.o objs/a-globals.o objs/a-lib.o ... /opt/raspi/bin/arm-linux-strip r3 /opt/raspi/bin/arm-linux-nm -a r3 /opt/raspi/bin/arm-linux-nm: r3: no symbols ls -l r3 -rwxrwxr-x 1 carl carl 449556 Dec 24 17:00 r3
Copy your new r3 over to your embedded system and power up Rebol. Now you've got some real power. It will run your Rebol programs identically to your other systems. You're all set to do great things.
Of course, R3 open source makes this possible now.
Merry Chirstmas. Enjoy.