Compiler...

Compiler... - C - Programmation

Marsh Posté le 29-03-2006 à 14:12:29    

Voilà je me suis mis à la programmation, en commençant par le langage C.
Mais, pour commencer, je ne sais pas comment compiler un code.
Enfin, j'ai téléchargé code::blocks et C-Editor...
Mais, avec C-Editor, il me dit

Citation :

Error E2194 : could not find the file c:test.cpp


Je l'avais enregistré dans c:test.c normalement.
Je ne comprends pas ce que c'est que ce fichier .cpp...

 

Et avec code::blocks, il me dit

Citation :

Nothing to be done.
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings

 

Voilà, donc je ne comprends pas où j'ai fait une erreur..
Pour info, le programme que je veux compiler c'est tout simplement :

Code :
  1. #include <stdio.h>
  2. /* This program illustrates the use of the printf function */
  3. //Ce programme illustre le fonctionnement de la fonction printf.
  4. int main(int argc,char* argv[]){
  5.   int i;
  6.   int octal=0123;
  7.   int hex=0xFF32;
  8.   unsigned char c='1',d='é';
  9.   float f=0.5,g=1E10;
  10.   for (i=0;i<argc;i++){
  11.     printf("Argument %i = %sn",i,argv[i]);
  12.   }
  13.   while (0) ;
  14.   do ; while (0);
  15. }
 

ou encore :

 
Code :
  1. #include <stdio.h>
  2. main ()
  3. {
  4.     printf("bonjour, maîtren" )
  5. }
 

Merci

Reply

Marsh Posté le 29-03-2006 à 14:12:29   

Reply

Marsh Posté le 29-03-2006 à 14:29:01    

Ton compilo, il cherche un fichier nommé test.cpp (C++) au lieu de test.c (C).
 
Si tu ne cherche pas forcément à faire du C pur tu peut toujours renommer ton test.c en test.cpp.
 
Sinon, tu devra trouver une option de CEditor pour refaire le makefile (je connais pas CEditor, cherche une option ``rebuild``).

Reply

Marsh Posté le 29-03-2006 à 14:31:17    

nargy a écrit :

Si tu ne cherche pas forcément à faire du C pur tu peut toujours renommer ton test.c en test.cpp.


 
Non.
 
Soit on fait du C, soit on fait du C++.  
Mais le "C qui compile en C++ avec des bouts des deux langages dedans" ça devrait être passible de prison.
 
Concernant le problème avec code::blocks, je n'en sais rien en revanche, je ne connais pas cet IDE.

Reply

Marsh Posté le 29-03-2006 à 14:36:49    

Et il est fortement déconseillé d'appeler un programme test, surtout sous unix :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 29-03-2006 à 14:42:50    

Bein, le probleme, c'est qu'il cré bien un fichier du nom que je lui ai donné, mais sans extansion! Donc, c'est bisard, je fais quoi je le renomme en lui ajoutant l'extansion .c ?
Et puis même, je le lance avec quoi ce fichier .c ? Pour l'executer..
Et pour finir, il n'y a pas de réelles options dan CEditor, à part sur l'apparence et le chemin du compilateur (bcc32, externe à CEditor)...
 
Mais c'est surtout code::blocks que je voudrais utiliser (étant donné les commentaires que j'en ai lu), donc... Si tu pouvais m'aider là dessus plutot... ^^
 
EDIT : je répondais à nargy là!
 
et Elmoricq, qu'utilises-tu toi? Pour que j'essai..
 
Quant à kadreg, j'suis pas sous unix, mais bon je retient quand même ^^


Message édité par floboss07 le 29-03-2006 à 14:47:10
Reply

Marsh Posté le 29-03-2006 à 14:47:00    

Ton source devrait porter l'extension ".c"
 
Après tu le passes à la compilation, puis à l'édition de lien. Mais de ton côté ça devrait être transparent, et tu ne devrais voir qu'une seule étape, la "compilation".
 
En sortira un fichier ".exe", que tu pourras exécuter à ta guise.

Reply

Marsh Posté le 29-03-2006 à 14:49:45    

Merci Elmoricq, mais pourrais-tu me dire les étapes avec le programme que tu utilise pour voir?

Reply

Marsh Posté le 29-03-2006 à 15:08:48    

fichiers sources:
.h -> contenant les définitions et déclarations (prototypes)
test.h:


/* include ce fichier une seule fois */
#ifndef TEST_H
#define TEST_H
/* déclarer la fonction test */
void test();
#endif


 
.c -> contenant le code et les initialisations
test.c:


/* inclure les définitions */
#include "test.h"
#include <stdio.h>
/* code de la fonction test */
void test()
{
  printf("bonjour, maître\n" );
}
/* la fonction main n est jamais déclarée */
int main()
{
  test(); return 0;
}


 
fichiers objets, obtenu après compilation:
.o -> compilé à partir d un .c
typiquement: cc -c test.c
 
librairies, obtenu après ``édition des liens``:
.a -> librairie statique contenant plusieurs .o
.dll/.so -> librairie dynamique contenant plusieurs .o
typiquement: cc -o test.a test.o
 
fichiers executable, obtenu après ``édition des liens`` de plusieurs .o, .a, .dll...:
.exe -> executable
typiquement: cc -o test.exe test.o
 
Les librairies dynamiques .dll sont chargées au démarrage du programme (doivent être installées sur le système), les librairies statiques .a sont inclues dans le .exe (prends plus de place lorsque la librairie est utilisé par plusieurs programmes).
 
Un makefile sert à vérifier que les dépendances entre les différents fichier inclus soit mis à jour et que les fichiers objets soient recompilés lorsque un fichier source change.
 
makefile:


test.exe: test.o # test.exe dépends de test.o
  cc -o test.exe test.o # comment construire test.exe à partir de test.o
test.o: test.c test.h # test.o dépends de test.c et test.h
  cc -c test.c # comment construire test.o


typiquement: make


Message édité par nargy le 29-03-2006 à 15:26:45
Reply

Marsh Posté le 29-03-2006 à 15:18:12    

édité plusieurs fois, ça marche...

Reply

Marsh Posté le 29-03-2006 à 15:19:06    

Citation :

typiquement: ld -o test.a test.o


 
plutot "ar s" ou "ranlib",
 

Citation :

Les librairies dynamiques .dll sont chargées au démarrage du programme


 
pas forcement, ca peut etre fait au cours de l'execution (voir dlopen)

Reply

Marsh Posté le 29-03-2006 à 15:19:06   

Reply

Marsh Posté le 29-03-2006 à 15:25:25    

attends j ai viré les ld, ça marche pas chez moi, y a que cc qui marche.

Reply

Marsh Posté le 29-03-2006 à 15:28:08    

ok avec du copier/coller du code ci dessus ça marche sous linux. reste sous windows à avoir un compilo appelé ``cc``.

Reply

Marsh Posté le 29-03-2006 à 15:31:54    

dans ton exemple tu devrait faire un test.c, avec le code de la fonction test, et le main dans main.c
comme ca tu compiler séparement le code de test et le .h servira  à quelque chose

Reply

Marsh Posté le 29-03-2006 à 15:37:26    

ouais... et puis utiliser une ptite librairie graphique, ajouter du son avec une lib TextToSpeech... :D

Reply

Marsh Posté le 29-03-2006 à 15:43:55    

floboss07 a écrit :

Voilà je me suis mis à la programmation, en commençant par le langage C.
Mais, pour commencer, je ne sais pas comment compiler un code.
Enfin, j'ai téléchargé code::blocks et C-Editor...


Déjà, je te conseille de t'en tenir à un seul IDE pour le moment. Je connais un peu Code:Blocks mais pas du tout C-Editor. Quel est ton système ?

Citation :


Et avec code::blocks, il me dit

Citation :

Nothing to be done.
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 0 warnings




Pour forcer la recompilation :  
Bouton Rebuild  
ou  
Build/Rebuild
ou Ctrl-F11

Citation :


Voilà, donc je ne comprends pas où j'ai fait une erreur..
Pour info, le programme que je veux compiler c'est tout simplement :


C'est légèrement atroce comme code...

Code :
  1. #include <stdio.h>
  2. int main(int argc, char* argv[])
  3. {
  4.    int i;
  5.    for (i = 0;i < argc;i++)
  6.    {
  7.       printf("Argument %i = %s\n", i, argv[i]);
  8.    }
  9.    return 0;
  10. }


Message édité par Emmanuel Delahaye le 29-03-2006 à 15:48:23

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 29-03-2006 à 15:44:54    

Euh merci.. Mais... Je vous dit quand même, je débute completement en C, donc là ça c'était tiré de "Le langage C, Norme ANSI" de K&R! Si vous l'avez, vous verrez en page 6 qu'ils parlent juste de créer un fichier contenant  

Code :
  1. #include <stdio.h>
  2. main ()
  3. {
  4.          printf("bonjour, maîtren" );
  5. }


et de le compiler (dans leur exemple, il utilisent UNIX, donc tapent la commande cc nomdufichier.c ce qui cré un exécutable appelé a.out.
Donc, partant du même principe, sans faire + compliqué, comment créer un executable à partir de ce code?
 
Merci :)

Reply

Marsh Posté le 29-03-2006 à 15:47:09    

Réponse à Emmanuel D elahaye :
 
J'utilise Windows XP, et j'utiliserais l'IDE que vous me conseillerais lol ^^
 
Quant au code, il est tiré de CEditor, en code d'exemple de ce programme...

Reply

Marsh Posté le 29-03-2006 à 15:47:43    

ben comme ils disent:
cc test.c
ça te crée un executable a.out

Reply

Marsh Posté le 29-03-2006 à 15:49:29    

[quote="'Floboss07"]
[...]
J'utilise Windows XP
[...]
[/quote]

Reply

Marsh Posté le 29-03-2006 à 15:59:28    

c est quoi ton compilo?
code::blocks supporte:
    * GCC (MingW / Linux GCC)
    * MSVC++
    * Digital Mars
    * Borland C++ 5.5
    * Open Watcom
sinon vire le fichier ``makefile`` ou ``Makefile`` et recommence la compilation.

Reply

Marsh Posté le 29-03-2006 à 16:04:54    

nargy a écrit :

ouais... et puis utiliser une ptite librairie graphique, ajouter du son avec une lib TextToSpeech... :D


 
dans ton exemple le .h il sert à rien, sauf si tu compile test séparément, c'est tout :)

Reply

Marsh Posté le 29-03-2006 à 16:07:49    

> dans ton exemple le .h il sert à rien, sauf si tu compile test séparément, c'est tout :)
 
C ce que je fait.. pour l exemple seulement.
 
Floboss07 cherche le nom de son compilo, sous winXP ça doit sûrement être ``vcc``?

Reply

Marsh Posté le 29-03-2006 à 16:14:08    

nargy a écrit :

Floboss07 cherche le nom de son compilo, sous winXP ça doit sûrement être ``vcc``?


Bêtises...
 
Borland : bcc
Mingw : gcc


Message édité par Emmanuel Delahaye le 29-03-2006 à 16:14:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 29-03-2006 à 16:15:17    

Reply

Marsh Posté le 29-03-2006 à 16:19:45    


Le monsieur, il a parlé de Borland et de Code::Blocks...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 29-03-2006 à 16:26:34    

J'ai borland et GCC (inclu dans l'instal de code::blocks)
 
EDIT : et à l'instal de code::blocks, j'ai choisi GCC en "par défault"..


Message édité par floboss07 le 29-03-2006 à 16:27:38
Reply

Marsh Posté le 29-03-2006 à 16:38:07    

gcc test.c

Reply

Marsh Posté le 29-03-2006 à 19:58:38    

Tu peux faire une phrase please? Parce que là je ne comprends pas ce que tu veux dire lol...

Reply

Marsh Posté le 29-03-2006 à 20:47:42    

Pour tester ton programme, tu ouvre une fenêtre MSDOS, tu te mets dans le bon répertoire et tu tapes (Gnu Gcc):
gcc test.c
ou (BorlandC++):
bcc test.c
 
Je suppose que code::blocks peut faire ça automatiquement, mais je ne l ai jamais utilisé...

Reply

Marsh Posté le 29-03-2006 à 21:13:05    

Niquel, merci, je vais donc continuer mon apprentissage...
Ca ne m'étonnerais pas que je vous repose bientot une autre question ^^ :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed