OVH Cloud OVH Cloud

gcc & Linux

12 réponses
Avatar
Cyber Girl
Hello !

Je suis nouvelle avec Linux et gcc. En fait j'utilise Fedora et les
différents compilateurs ont été installés. Mon but ultime est de compiler
du C++ sous Linux.

Par contre, je suis incapable de compiler, j'ai toutes sortes d'erreurs.
Selon moi, il ne trouve pas les différentes librairies et moi non plus de
toutes facons !

Est-ce que quelqu'un pourrait me refiler un bon document sur le sujet ?

Merci !

10 réponses

1 2
Avatar
Fabien LE LEZ
Le compilateur[*] C++ s'invoque par g++, pas gcc.

[*] en fait, c'est un abus de langage, car la principale différence
entre les deux se passe au moment du link.

Et la traduction en français de "library" est "bibliothèque".


--
;-)
Avatar
drkm
Fabien LE LEZ writes:

Le compilateur[*] C++ s'invoque par g++, pas gcc.

[*] en fait, c'est un abus de langage, car la principale différence
entre les deux se passe au moment du link.


Mais les front-ends sont différents, non ? Le compilo C, c'est pas
cc1, et C++ cc1plus ? J'aurais dit que la phase d'édition de lien
était même plutôt assez semblable (mis à part les bibliothèque
standards cherchées).

--drkm

Avatar
Fabien LE LEZ
On Thu, 06 Jan 2005 23:38:47 +0100, drkm :

Mais les front-ends sont différents, non ? Le compilo C, c'est pas
cc1, et C++ cc1plus ?


Euh... sais pas. Même s'il ne s'agit que de compiler (i.e. .cpp ->
.o), j'utilise g++ -c sans me poser de question.

Au fait, t'es sûr que le terme "front-end" est adapté ici ?


--
;-)

Avatar
Gabriel Dos Reis
drkm writes:

| Fabien LE LEZ writes:
|
| > Le compilateur[*] C++ s'invoque par g++, pas gcc.
|
| > [*] en fait, c'est un abus de langage, car la principale différence
| > entre les deux se passe au moment du link.
|
| Mais les front-ends sont différents, non ?

Oui, mais si je lis bien Fabien il ne parle pas de front-ends ; il
parle des compilateurs.

| Le compilo C, c'est pas
| cc1, et C++ cc1plus ? J'aurais dit que la phase d'édition de lien
| était même plutôt assez semblable (mis à part les bibliothèque
| standards cherchées).
|
| --drkm

--
Gabriel Dos Reis

Avatar
Gabriel Dos Reis
Fabien LE LEZ writes:

| On Thu, 06 Jan 2005 23:38:47 +0100, drkm :
|
| >Mais les front-ends sont différents, non ? Le compilo C, c'est pas
| >cc1, et C++ cc1plus ?
|
| Euh... sais pas. Même s'il ne s'agit que de compiler (i.e. .cpp ->
| .o), j'utilise g++ -c sans me poser de question.
|
| Au fait, t'es sûr que le terme "front-end" est adapté ici ?

Tu dirais quoi toi ?

-- Gaby
Avatar
Fabien LE LEZ
On 07 Jan 2005 02:02:23 +0100, Gabriel Dos Reis
:

| Au fait, t'es sûr que le terme "front-end" est adapté ici ?

Tu dirais quoi toi ?


Si j'ai tout bien compris, cc1plus est le compilo appelé par g++[*] ;
g++ serait donc le front-end, et cc1plus le back-end. Mais je peux me
tromper.

[*] en fait, toujours si j'ai bien compris, par défaut gcc et g++
appellent le compilo C++ pour compiler les .cpp, et le compilo C pour
compiler les .c ; g++ linke avec les bibliothèques C++, pas gcc.


--
;-)

Avatar
Gabriel Dos Reis
Fabien LE LEZ writes:

| On 07 Jan 2005 02:02:23 +0100, Gabriel Dos Reis
| :
|
| >| Au fait, t'es sûr que le terme "front-end" est adapté ici ?
| >
| >Tu dirais quoi toi ?
|
| Si j'ai tout bien compris, cc1plus est le compilo appelé par g++[*] ;

en fait, cc1plus est juste le front-end appelé par g++.

| g++ serait donc le front-end, et cc1plus le back-end. Mais je peux me
| tromper.

euh, le back-end est quelque chose de différent.
Dans le cas de GCC, il est commun à tous les compilos qu'on trouve GCC
(GNU Compiler Collection). En fait, c'est un peu plus compliqué
(parce que le backend est en fait inclus dans les front-ends ;-))

De fait, g++ est juste un « driver » -- tu peux invoquer le
compilateur C avec g++, il suffit juste de dire

g++ -x c monfichier.c

le résultat risque de ne pas te plaire, suivant ce que tu as mis dans
monfichier.c :-)

| [*] en fait, toujours si j'ai bien compris, par défaut gcc et g++
| appellent le compilo C++ pour compiler les .cpp, et le compilo C pour
| compiler les .c ; g++ linke avec les bibliothèques C++, pas gcc.


grosso modo, oui.

-- Gaby
Avatar
drkm
Gabriel Dos Reis writes:

drkm writes:

| Mais les front-ends sont différents, non ?

Oui, mais si je lis bien Fabien il ne parle pas de front-ends ; il
parle des compilateurs.


En effet. J'ai cru qu'il parlais de la chaîne avant l'édition de
liens. En fait, en lisant ton message, je me rend compte que je ne
suis pas sûr de la terminologie.

Le driver (gcc, g++, etc.) conduit le tout. Le front-end analyse le
langage et construit un « Tree ». Le back-end le transforme en
langage d'assemblage (je pense que c'est également ici qu'a lieu la
phase d'optimisation, sur le Tree). C'est ceci que l'on appelle le
compilateur ? En fait, j'aurais plutôt dit qu'il s'agissait du couple
front-end/back-end (du langage source jusqu'au langage d'assemblage).

Puis l'assembleur et enfin l'éditeur de liens font leur office. Il
y a aussi CPP, bien sûr, que je n'ai pas mentionné.

Ça me fait combien, sur 20 ?

--drkm

Avatar
Fabien LE LEZ
On 07 Jan 2005 03:04:26 +0100, Gabriel Dos Reis
:

[snip les explications]


Il est encore temps de décider de bonnes résolutions ? En 3005, je
promets de ne plus ouvrir ma gueule quand je n'ai aucune idée du
problème ~_~
En attendant, je retourne à mon clicodrome borlandien...


--
;-)

Avatar
Matthieu Moy
Fabien LE LEZ writes:

Si j'ai tout bien compris, cc1plus est le compilo appelé par g++[*] ;
g++ serait donc le front-end, et cc1plus le back-end. Mais je peux me
tromper.


Tu parles de front-end/back-end au sens wrapper/celui qui fait le
boulot. En compilation, la terminologie habituelle, c'est front-end analyse du code source, back-end = generation de code.

C'est chiant ces mots qui ont un sens different selon le
contexte ! ;-)

--
Matthieu

1 2