user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 10-10-2013 21:28:24

IceF0x
#! Gourou Linux

[Tuto] introduction a la programmation C++ sous Linux

Sous Linux nous n'avons pas besoin de logiciel particulier pour pourvoir programmer en C++,
certain d'entre vous on déjà lu le tutoriel du site du zéro pour débuter en C++:
http://fr.openclassrooms.com/informatiq … -langage-c

Sous Linux majoritairement les outils nécessaire à la compilation du C++ sont déjà présent,
il s'agit de "G++" et d'un éditeur de texte "nano", "vi" ou encore "Gedit" en passant par "kate".

On va plus particulièrement s'intéresser à "GCC", http://gcc.gnu.org/ qui est un outil sous licence GNU abréviation de GNU Compiler Collection.
Il s'agit d'une collection de logiciels libres intégrés capables de compiler divers langages de programmation, dont C, C++, Objective-C, Java, Ada et Fortran.
GCC est utilisé pour le développement de la plupart des logiciels libres.
Le noyau Linux qui est codé en C, dépend notamment étroitement des fonctionnalités de GCC.

Donc pour commencer à programmer sous Linux il ne vous faut que ces 2 outils,
G++ qui est une branche de GCC et un éditeur de texte (bloc-notes sous Windows).

donc pour commencer nous allons prendre un éditeur de texte et taper les célèbres ligne de code "Hello World!"

vim premier.cpp

J'utilise vim qui est une extension de vi installé par défaut dans Linux
le fichier source doit comporter une extension .cpp et nous l'appellerons premier.

[== C++ ==]
#include <iostream>

using namespace std;

int main(){
	cout << "Hello World" << endl;
	return 0;	
}

que l'on compile avec G++

g++ -o hello premier.cpp

Étudions la commande de compilation gcc

On appelle le compilateur: gcc

On lui indique le nom du fichier de sortie qu'aura le binaire: -o hello

On lui précise le fichier source: premier.cpp

Si la commande ne retourne aucune erreur, c'est que la compilation c'est bien déroulée, vous devriez retrouver un fichier binaire qui se nomme hello dans le répertoire courant.

$ ls -l hello
-rwxr-xr-x 1 coyotus coyotus 1397 2012-01-02 08:04 hello

Nous allons maintenant tester notre exécutable, je sent votre impatience wink.
Pour lancer un exécutable sous Linux il faut l'appeler en le précédant d'un point et d'un slash, "./".

$ ./hello
Hello World !
coyotus@debian ~ $


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#2 14-07-2014 23:26:19

Sn4Pcid3
Membre

Re : [Tuto] introduction a la programmation C++ sous Linux

Salut Coyotus

Tu peux aussi add la commande suivant:

[== Indéfini ==]
make premier

Bien à toi

Hors ligne

#3 15-07-2014 06:13:44

IceF0x
#! Gourou Linux

Re : [Tuto] introduction a la programmation C++ sous Linux

Sn4Pcid3 a écrit :

Salut Coyotus

Tu peux aussi add la commande suivant:

make premier

Bien à toi

make ne s'utilise que si il y a un fichier Makefile sinon tu aura un message d'erreur

par exemple:

make premier.c
make: Nothing to be done for 'premier.c'.

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#4 15-07-2014 15:32:35

mimas
Membre

Re : [Tuto] introduction a la programmation C++ sous Linux

make premier.c
make: Nothing to be done for 'premier.c'.

Bin évidemment puisque tu lui commandes d’exécuter une tâche permettant de créer un fichier premier.c alors que celui-ci  existe déjà. Tape `make -d premier`, tu verras alors que make va essayer un tas de règles alors qu'il n'y a aucun Makefile.

Il est malin ce make. smile

Par contre, tu vas bouffer de l'erreur si le programme a besoin de bibliothèques ou de paramètres spécifiques pour être compiler.

Dernière modification par mimas (15-07-2014 15:35:19)

Hors ligne

#5 15-07-2014 20:04:51

IceF0x
#! Gourou Linux

Re : [Tuto] introduction a la programmation C++ sous Linux

Alors à quoi sert make premier sans le .c que propose Sn4Pcid3 ?


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#6 15-07-2014 23:54:05

mimas
Membre

Re : [Tuto] introduction a la programmation C++ sous Linux

Parce que Make possède des règles implicites.

Il dispose d'un ensemble de règles qui lui permettent de savoir comment construire un fichier. Dans notre cas, il s'agit du fichier premier, GNU Make teste tout un tas de règles et trouve qu'il existe un fichier premier.cpp. Ce fichier étant la source idéale à utiliser pour quelqu'un qui serait tenté d'obtenir un fichier nommé premier,  Make le compile avec cc pour obtenir le fichier tant désiré.

C'est la première fois que je vois que Make peut fonctionner dans Makefile, je suis également surpris. Brillante intervention de Sn4Pcid3 !

En ce qui concerne l'utilisation de make, l'argument est le nom de la règle (souvent le nom du fichier désiré, sauf pour clean, all….). Ce n'est pas le nom du fichier que l'on veut utiliser.

Dernière modification par mimas (15-07-2014 23:57:40)

Hors ligne

#7 16-07-2014 00:54:58

Sn4Pcid3
Membre

Re : [Tuto] introduction a la programmation C++ sous Linux

Salut

Je me demande ci il n'est pas présent dans le paquet de build-essential manpage-dev

[== Indéfini ==]
root@DARYL:~#apt-get install build-essential manpage-dev
.......
....... Installation en cours
.......
root@DARYL:~#wereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/bin/X11/gcc
root@DARYL:~#which gcc
/usr/bin/gcc
root@DARYL:~#gcc -V
Using built-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.7/lto-wrapper

Target: x86_64-linux-gnu

Configured with: ../src/configure -v --with-pkgversion='Debian 4.7.2-5' --with-b
ugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fort
ran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-li
nker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettex
t --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/u
sr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-deb
ug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enab
le-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --b
uild=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu

Thread model: posix

gcc version 4.7.2 (Debian 4.7.2-5)
root@DARYL:~#cd Desktop
root@DARYL:~/Desktop#nano "premier.c"
root@DARYL:~/Desktop#ls -l
total 4
-rw-r--r-- 1 root root 144 jui 14 02:47 premier.c
root@DARYL:~/Desktop#make premier
cc       premier.c     -o premier
root@DARYL:~/Desktop#
total 12
-rw-r--r-- 1 root root 144 jui 14 00:32 premier          /* green color */
-rw-r--r-- 1 root root 144 jui 14 02:47 premier.c
root@DARYL:~/Desktop#./premier
Hello World!
root@DARYL:~/Desktop#

Le code-source contenu dans mon fichier premier.c créer avec nano

Langage C

[== C++ ==]
#include<stdio.h>
/* code-source de base d'un programme en C */
int main(void)
{
Printf("Hello World! \n")
return 0;
}

Langage C++

[== C++ ==]
#include "iostream"
// Code-source de base d'un programme en C++
int main(void)
{
     std::cout <<"Hello World! \n";
     return 0;
}

Il me retourne aucune erreur dans ce cas de figure, mais ci mon fichier ce nome par exemple ( le premier.c ) avec un espace sa retourne l'erreure suivant:

[== Indéfini ==]
root@DARYL:~/Desktop#make "le premier"
make: *** Pas de règle pour fabriquer la cible  <<Hello World >>. Arrêt.
root@DARYL:~/Desktop#

Mais je me trouve dans le même répertoire ou ce trouve mon premier.c quand je fait make premier.

Bien à vous  tongue

Hors ligne

Pied de page des forums