Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
642 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Compiler un code C (from linux) avec un compiler win

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Compiler un code C (from linux) avec un compiler win

n°891718
zytrahus5
wait what?
Posté le 06-11-2004 à 10:34:49  profilanswer
 

Salut
 
j'ai récupéré un code source .c prévu pour linux. Le programme est court, il fait 50/100 lignes. J'ai fait du C dans ma jeunesse ( :lol: ) mais c'etait en environnement windows (genre Turbo C compiler)... J'ai encore pas mal de souvenir, et me semblait bien qu'on avait des fichiers d'entete, mais dans ce source, il n'y en a aucun (peut etre une particularité de la compilation sous linux ?).
 
Bref, j'ouvre le code avec un Borland C++ builder et évidemment :
 
 
1/ il ne trouve pas la plupart des fonctions (mathématiques en général) qui sont utilisés
 
2/ il reconnait certaines déclarations de type :       TypeInt *tab;
 
 
 
 
Si vous aviez un ou deux conseils :ange:  :hello:  
 
 [:cutter]  [:cutter]  [:cutter]  [:cutter]


---------------
http://www.zytratech.com
mood
Publicité
Posté le 06-11-2004 à 10:34:49  profilanswer
 

n°891720
kadreg
profil: Utilisateur
Posté le 06-11-2004 à 10:56:16  profilanswer
 

fait péter le code qu'on voit la tronche du truc :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°891722
Lam's
Profil: bas.
Posté le 06-11-2004 à 11:03:56  profilanswer
 

Ouaip, on est Samedi, et Samedi c'est : "Kadreg joue à réécrire les programmes pour qu'ils en passent plus au Round-trip d'Objecteering". :lol:

n°891723
kadreg
profil: Utilisateur
Posté le 06-11-2004 à 11:05:33  profilanswer
 

Pourquoi, c'est pas une saine occupation ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°891729
zytrahus5
wait what?
Posté le 06-11-2004 à 11:21:13  profilanswer
 

attention  [:zytrahus5]  
 
 
 

Code :
  1. #define S32BITS
  2. #define TypInt long
  3. #define NBOCT   4
  4. #define BASE1 1000000L
  5. #define BASE2 100000L
  6. #define BASE3 10000L
  7. #define NBZ1 6
  8. #define NBZ2 5
  9. #define NBZ3 4
  10. #define NBIT2 11
  11. #define GBASE1 10
  12. #define GBASE2 12
  13. #define GBASE3 14
  14. #define LIMP1 1501
  15. #define LIMP2 15001
  16. #define LIMP3 150001
  17. #define LOGb10_2 0.30103
  18. TypInt *resul;
  19. TypInt *resul1;
  20. TypInt *resul2;
  21. int K;
  22. int MAX, MAXB;
  23. int BASE;
  24. int GBASE;
  25. int I, J;
  26. main(argc,argv)
  27. int argc;
  28. char *argv[];
  29. {
  30. int k, i, B2;
  31. int lim, limb; /* NOMBRE DE DECIMALES DEMANDEES */
  32. int NB;
  33. int Dec; /* 2^Dec = 1 << Dec */
  34. char *nam;
  35. nam = argv[0];
  36. B2 = 0;
  37. --argc; ++argv;
  38. lim = 0;
  39. while(argc) {
  40.  if(*argv[0] == '-') {
  41.   switch(*(argv[0] + 1)) {
  42.    case '2':
  43.     B2 = 1;
  44.     break;
  45.    default:
  46.     Us(nam);
  47.     break;
  48.   }
  49.  }
  50.  else
  51.   lim=atoi(argv[0]);


 
 
c'est juste le début :o rien que là ça appelle déjà 3 ou 4 fonctions non référencées :/
 
le code tel qu'il est marche sous nux, testé hier soir par un copain...


Message édité par zytrahus5 le 06-11-2004 à 11:27:44

---------------
http://www.zytratech.com
n°891731
Lam's
Profil: bas.
Posté le 06-11-2004 à 11:26:11  profilanswer
 

Ouais ouais, prend nous pour des mickeys. Je me suis arreté à la ligne 4, il manque déjà un e dans TypeInt. Donc je doute que ça compile sous line uxe.
 
D'autre part, c'est du C K&R, donc remplace déjà la ligne 33 à 36 par:
int main(int argc, char *argv[])

n°891732
zytrahus5
wait what?
Posté le 06-11-2004 à 11:29:18  profilanswer
 

:o j'avais testé en déclarant uniquement des Long a la place des typint pour voir si ca changeait quelque chose :o
et non ça change rien sous win, et en remettant les typint, j'ai ajouté un e en les déclarant, Mickey [:joce]
 
 
 
 
 
C K&R :/


---------------
http://www.zytratech.com
n°891733
zytrahus5
wait what?
Posté le 06-11-2004 à 11:32:43  profilanswer
 

Code :
  1. int main(int argc, char *argv[])
  2. int argc;
  3. char *argv[];


 
la premiere erreur est sur la déclaration du int argc [:le kneu]
 
ensuite ça passe auxc fonctions non définies ( Us, atoi, exit...)
 
 
le fait que ce soit du C K&R ça signifie que c'est inutilisable ?


Message édité par zytrahus5 le 06-11-2004 à 11:32:59

---------------
http://www.zytratech.com
n°891734
Lam's
Profil: bas.
Posté le 06-11-2004 à 11:34:49  profilanswer
 

Eh, j'ai dit remplace la ligne 33 à 36. Donc tu dégages le int argc et la ligne d'après.
 
Le fait que ce soit du K&R fait que les compilos rechignent à compiler ça. Il faut que tu regardes dans le doc de ton compilo comment faire pour qu'il accepte du C K&R (ou au pire, qu'il ne soit pas strict sur la norme ANSI).

n°891735
couak
Posté le 06-11-2004 à 11:34:51  profilanswer
 

sinon tu peux essayer de compiler avec djgpp, c'est un portage de gcc sur les plateformes win32

mood
Publicité
Posté le 06-11-2004 à 11:34:51  profilanswer
 

n°891736
Lam's
Profil: bas.
Posté le 06-11-2004 à 11:35:50  profilanswer
 

couak a écrit :

sinon tu peux essayer de compiler avec djgpp, c'est un portage de gcc sur les plateformes win32


C'est mort djgpp. Tu veux dire Mingw ?  
Et je confirme, j'ai un peu de code assez vieux, et ça passe avec GCC.

n°891737
zytrahus5
wait what?
Posté le 06-11-2004 à 11:35:54  profilanswer
 

Lam's a écrit :

Eh, j'ai dit remplace la ligne 33 à 36. Donc tu dégages le int argc et la ligne d'après.
 
Le fait que ce soit du K&R fait que les compilos rechignent à compiler ça. Il faut que tu regardes dans le doc de ton compilo comment faire pour qu'il accepte du C K&R (ou au pire, qu'il ne soit pas strict sur la norme ANSI).

ok vais essayer d'aller me renseigner sur ce que le C K&R déjà


---------------
http://www.zytratech.com
n°891738
zytrahus5
wait what?
Posté le 06-11-2004 à 11:49:35  profilanswer
 

Lam's a écrit :

C'est mort djgpp. Tu veux dire Mingw ?  
Et je confirme, j'ai un peu de code assez vieux, et ça passe avec GCC.

MinGW c'est compileur qui fonctionne sous windows pour compiler un code C pour nux ? :??:


---------------
http://www.zytratech.com
n°891754
zytrahus5
wait what?
Posté le 06-11-2004 à 12:13:29  profilanswer
 

j'ai réussi a le compiler avec minGW, ça a marché sans tortiller. (a partir du code original)
 
Maintenant si je veux faire de ce programme, un truc plus convivial, faire une petite interface graphique, comment il faut que je m'y prenne pour palier aux erreurs que j'ai dans un compileur plus moderne comme C++ builder ?


---------------
http://www.zytratech.com
n°891757
Lam's
Profil: bas.
Posté le 06-11-2004 à 12:16:15  profilanswer
 

Tu vas voir www.wxwidgets.org pour continuer à utiliser MinGW. En plus ton code sera portable vers Linux.

n°891759
zytrahus5
wait what?
Posté le 06-11-2004 à 12:20:48  profilanswer
 

Lam's a écrit :

Tu vas voir www.wxwidgets.org pour continuer à utiliser MinGW. En plus ton code sera portable vers Linux.

Citation :

An open source C++ GUI framework to make cross-platform programming child's play


 
ça semble en effet ce qu'il faudrait :d enfin si minGW sait le compiler :d
 
 
 
sinon, pour ma culture, comment le fichier C source peut il etre compiler par minGW alors qu'aucun fichier d'entente est donné ? (dans minGW c'est GCCwin32 que j'ai utilisé)


---------------
http://www.zytratech.com
n°891764
Lam's
Profil: bas.
Posté le 06-11-2004 à 12:23:23  profilanswer
 

J'ai pas compris ta question...
 
Pence à regarder ça aussi: http://www.bloodshed.net/devcpp.html

n°891765
zytrahus5
wait what?
Posté le 06-11-2004 à 12:25:55  profilanswer
 

Lam's a écrit :

J'ai pas compris ta question...
 
Pence à regarder ça aussi: http://www.bloodshed.net/devcpp.html

ce que je veux dire, c'est que dans le code *.c j'ai aucun fichier d'entete, pourtant le code fait appel a plusieurs fonctions qui ne sont pas explicitées dans le code meme, donc normallement faudrait mettre les headers où ces fonctions sont explicitées :
 
- dans le borland C++ builder, il me sortait l'erreur comme quoi justement ces fonctions etaient non définies
- avec GCC de minGW aucune erreur il a trouvé les fonctions tout seul.
 
pourquoi ?


---------------
http://www.zytratech.com
n°891768
Lam's
Profil: bas.
Posté le 06-11-2004 à 12:35:33  profilanswer
 

Parce que ce sont des fonctions standards qui renvoient des int.  
 
Par défaut, en K&R, tout fonction non déclarée est considérée comme retournant un int. De nos jours, ce n'est plus le cas.
 
Il faudrait pas grand chose pour que ton code soit correct:
- déclarer toutes les fonctions que tu utilises en incluant stdio.h, stdlib.h etc.
- changer les en-têtes de tes fonctions pour que ça donne:
  int fonction(Type1 arg1, Type2, arg2)
au lieu de:
  fonction(arg1, arg2)
  Type1 arg1; Type2 arg2;

n°891783
zytrahus5
wait what?
Posté le 06-11-2004 à 12:45:17  profilanswer
 

merci pour l'explication :)


---------------
http://www.zytratech.com
n°891812
zytrahus5
wait what?
Posté le 06-11-2004 à 13:07:37  profilanswer
 

toujours dans le meme exercice, j'aurais besoin de la fonction "time" de linux (donnant la durée d'un process)... j'essaie de compiler ce source avec minGW mais c'est pas si simple cette fois :/


---------------
http://www.zytratech.com
n°891824
zytrahus5
wait what?
Posté le 06-11-2004 à 13:52:25  profilanswer
 

Lam's a écrit :

Tu vas voir www.wxwidgets.org pour continuer à utiliser MinGW. En plus ton code sera portable vers Linux.

t'aurais pas des conseils sur son utilisation ? les tutos se courent pas apres :/


---------------
http://www.zytratech.com
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Compiler un code C (from linux) avec un compiler win

 

Sujets relatifs
[C/C++] interroger le système (connaitre le path sous linux)Lire du binaire => code hexadecimal
"Cacher" code php ? Autre serveur ?[Recherche] Code HTML légende passage du curseur sur l'image
[Linux/C++] Faire une application de type "GPS"exe/dll : duplication du code des méthodes
Commande INTERFAC TO SUBROUTINE (Vis. Fort.) à remplacer sous LinuxC sous Linux
Site où ça code et décode des nombres....Crypter code php
Plus de sujets relatifs à : [C] Compiler un code C (from linux) avec un compiler win


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR