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
LEDE (OpenWrt) Build System
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 :
Target System > MediaTek Ralink MIPS
Subtarget > MT7688 based boards
Target Profile > Multiple Devices
Target Devices >Onion Omega2
et
Onion Omega2+
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