Difference between revisions of "Trash Fr:HelloWorldCpp"
(→Compilation) |
|||
Line 30: | Line 30: | ||
==Compilation== | ==Compilation== | ||
− | Le compilateur croisé est installé dans ''armadeus/buildroot/ | + | Le compilateur croisé est installé dans ''armadeus/buildroot/build_arm/staging_dir/bin/'' et est appelé ''arm-linux-g++'' |
Il y a 2 façons de l'utiliser: | Il y a 2 façons de l'utiliser: | ||
− | * soit en ajoutant ''armadeus/buildroot/ | + | * soit en ajoutant ''armadeus/buildroot/build_arm/staging_dir/bin/'' à votre variable d'environnement ''PATH'' et en appelant ensuite ''arm-linux-g++'' au lien de ''g++'' |
− | * ou en appelant directement ''armadeus/buildroot/ | + | * ou en appelant directement ''armadeus/buildroot/build_arm/staging_dir/bin/arm-linux-g++'' |
Ainsi, pour compiler votre petit programme, faites (ici hello.c a été enregistré dans le répertoire armadeus/target/demos/): | Ainsi, pour compiler votre petit programme, faites (ici hello.c a été enregistré dans le répertoire armadeus/target/demos/): | ||
[host demos]$ | [host demos]$ | ||
− | ../../buildroot/ | + | ../../buildroot/build_arm/staging_dir/bin/arm-linux-g++ -o hello hello.cpp |
==Fonctionnement== | ==Fonctionnement== |
Revision as of 23:18, 19 December 2007
Sur cette page, vous apprendrez à créer votre première application C++ pour votre carte Armadeus
Contents
Code source
Premièrement, prenez votre éditeur/IDE préféré et créez le programme suivant:
#include <iostream> using namespace std; class Hello { private: const char* message; public: Hello( const char* amessage ) { message = amessage; }; virtual ~Hello() { cout << "Bye, bye !" << endl; }; void speaks() { cout << message << endl; }; }; int main() { Hello hello( "APF9328 says Hello everybody !" ); hello.speaks(); return 0; }
Enregistre-le sous hello.cpp
Compilation
Le compilateur croisé est installé dans armadeus/buildroot/build_arm/staging_dir/bin/ et est appelé arm-linux-g++ Il y a 2 façons de l'utiliser:
- soit en ajoutant armadeus/buildroot/build_arm/staging_dir/bin/ à votre variable d'environnement PATH et en appelant ensuite arm-linux-g++ au lien de g++
- ou en appelant directement armadeus/buildroot/build_arm/staging_dir/bin/arm-linux-g++
Ainsi, pour compiler votre petit programme, faites (ici hello.c a été enregistré dans le répertoire armadeus/target/demos/):
[host demos]$
../../buildroot/build_arm/staging_dir/bin/arm-linux-g++ -o hello hello.cpp
Fonctionnement
Copiez votre exécutable hello sur votre carte soit par TFTP ou NFS.
TFTP
Assurez-vous d'avoir le serveur TFTP d'installé. sinon, c'est expliqué ici
Copiez hello dans votre répertoire TFTP:
[host demos]$ cp hello /tftpboot/
Chargez votre exécutable sur votre cible (ici l'IP de mon hôte est 192.168.0.2):
# tftp -g -r hello -l /usr/bin/hello 192.168.0.2
Donnez lui les droits exécutable, si perdus durant le transfert TFTP:
# chmod a+x /usr/bin/hello
Lancez-le:
# /usr/bin/hello APF9328 says: Hello World ! ;-) #
Maintenant vous en êtes capable ! ;-)
NFS
Assurez-vous d'avoir le serveur NFS installé, sinon, c'est expliqué ici
Je considère que votre pilote NFS est accessible depuis /mnt/host
Lancez votre programme:
[target]# /mnt/host/hello
En les mettant tous ensembles dans un Makefile
Vous pouvez mettre compiler et copier votre programme dans unMakefile pour faire les choses proprement:
CXX=arm-linux-g++ CXXFLAGS=-W -Wall LDFLAGS= EXEC=hello SRC= $(wildcard *.cpp) OBJ= $(SRC:.c=.o) all: $(EXEC) hello: $(OBJ) $(CXX) -o $@ $^ $(LDFLAGS) %.o: %.c $(CXX) -o $@ -c $< $(CXXFLAGS) .PHONY: clean install clean: rm -rf *.o rm -f $(EXEC) install: all cp -f $(EXEC) /tftpboot/
!! Si vous faites un copié&collé de la commande précédente, n'oubliez pas de les TABS de chaque cible(les Makefiles utilisent des TABS et non des ESPACES) !! Dans ce cas, make se plaindra d'une séparateur manquant à la ligne 11
Ensuite, faites juste:
[host demos]$ make clean install