Ressources informatiques

Ressources informatiques

Ressources informatiques

Cross-compiler helloWorld.c

Documentation : docs.onion.io : Cross-Compiling for the Omega

Il faut disposer de 4 Go de RAM et 15 Go d'espace disque sur une distribution Linux

Configurer le cross-compilateur

Installer les outils pour compiler le compilateur pour LEDE (OpenWrt)

doe@debian:~$ su - root
Mot de passe : 
root@debian:~# apt-get install -y git wget subversion build-essential libncurses5-dev zlib1g-dev gawk flex quilt git-core unzip libssl-dev python-dev python-pip libxml-parser-perl

...
Les NOUVEAUX paquets suivants seront installés :
  build-essential diffstat dpkg-dev flex gettext git git-core git-man libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libdpkg-perl liberror-perl libexpat1-dev libfile-fcntllock-perl libfl-dev libncurses5-dev libpython-all-dev libpython-dev libpython2.7-dev
  libserf-1-1 libssl-dev libssl-doc libsvn1 libtinfo-dev m4 python-all python-all-dev python-crypto python-dbus python-dev python-keyring
  python-keyrings.alt python-pip python-pip-whl python-secretstorage python-wheel python-xdg python2.7-dev quilt rsync subversion zlib1g-dev
root@debian:~# exit
déconnexion
doe@debian:~$ 

Télécharger LEDE (OpenWrt) Build System

doe@debian:~$ git clone https://github.com/OnionIoT/source.git
Clonage dans 'source'...
remote: Counting objects: 392954, done.
remote: Compressing objects: 100% (24/24), done.
remote: Total 392954 (delta 7), reused 3 (delta 3), pack-reused 392927
Réception d'objets: 100% (392954/392954), 137.11 MiB | 561.00 KiB/s, fait.
Résolution des deltas: 100% (266566/266566), fait.

Configurer les outils de cross-compilation

Le téléchargement a été effectué dans un répertoire source qu'il serait sans dout préférable de renommer.

doe@debian:~$ cd source/
doe@debian:~/source$ make menuconfig

Normalement la configuration est à priori bonne par défaut. Il faut vérifier que les éléments suivants sont cochés :

Onion Omega2 : Cross-compiler Onion Omega2 : Cross-compiler

Quitter et sauvegardez la configuration

Compiler les outils de cross-compilation
doe@debian:~/source$ make

Cela prend du temps ...

Compiler Hello World

Créer un fichier Makefile

Dans le répertoire de votre application, à l'aide d'un éditeur, créez le fichier Makefile ci-dessous (la valeur de la variable REP et le nom de la chaine de développement seront à modifier en fonction de votre configuration:

REP=~/source
STAGING_DIR=$(REP)/staging_dir
TOOLCHAIN_DIR=$(STAGING_DIR)/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16
INCLUDE_DIR=$(TOOLCHAIN_DIR)/usr/include
BIN=$(TOOLCHAIN_DIR)/bin
CC=$(BIN)/mipsel-openwrt-linux-gcc
CFLAGS= -std=gnu99
#LDFLAGS=-lbluetooth

SOURCES=helloWorld.c

OBJS=$(SOURCES:.c=.o)

all: helloWorld 
helloWorld.o: helloWorld.c
	$(CC) -c $(CFLAGS)  -I $(INCLUDE_DIR) -o $@ $<

%.o: %.c %.h
	$(CC) -c $(CFLAGS) -I $(INCLUDE_DIR) -o $@ $<

helloWorld: $(OBJS)
	$(CC) $(LDFLAGS) $(CFLAGS) -o helloWorld $(OBJS)

clean:
	rm *.o helloWorld 

Compiler

doe@debian:~/helloWorld$ make
~/source/staging_dir/toolchain-mipsel_24kc_gcc-5.4.0_musl-1.1.16/bin/mipsel-openwrt-linux-gcc  -std=gnu99 -o helloWorld helloWorld.o
mipsel-openwrt-linux-gcc: warning: environment variable 'STAGING_DIR' not defined
mipsel-openwrt-linux-gcc: warning: environment variable 'STAGING_DIR' not defined
doe@debian:~/helloWorld$ ls
helloWorld  helloWorld.c  helloWorld.o  Makefile

Transférez le fichier sur l'Onion Omega2

doe@debian:~/helloWorld$ scp helloWorld root@192.168.1.8:helloworld
root@192.168.1.8's password: 
helloWorld                              100% 7488   123.8KB/s   00:00    

Connectez-vous sur l'Onion Omega2

doe@debian:~/helloWorld$ ssh root@192.168.1.8
root@192.168.1.8's password: 


BusyBox v1.26.2 () built-in shell (ash)

   ____       _             ____
  / __ \___  (_)__  ___    / __ \__ _  ___ ___ ____ _
 / /_/ / _ \/ / _ \/ _ \  / /_/ /  ' \/ -_) _ `/ _ `/
 \____/_//_/_/\___/_//_/  \____/_/_/_/\__/\_, /\_,_/
 W H A T  W I L L  Y O U  I N V E N T ? /___/
 -----------------------------------------------------
   Ω-ware: 0.1.10 b160
 -----------------------------------------------------
root@Omega-264F:~# ls
helloworld

Exécutez votre programme

root@Omega-264F:~# ./helloworld
bonjour