Compiler un code C (from linux) avec un compiler win [C] - C - Programmation
Marsh Posté le 06-11-2004 à 10:56:16
fait péter le code qu'on voit la tronche du truc
Marsh Posté le 06-11-2004 à 11:03:56
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".
Marsh Posté le 06-11-2004 à 11:05:33
Pourquoi, c'est pas une saine occupation ?
Marsh Posté le 06-11-2004 à 11:21:13
attention
Code :
|
c'est juste le début 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...
Marsh Posté le 06-11-2004 à 11:26:11
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[])
Marsh Posté le 06-11-2004 à 11:29:18
j'avais testé en déclarant uniquement des Long a la place des typint pour voir si ca changeait quelque chose
et non ça change rien sous win, et en remettant les typint, j'ai ajouté un e en les déclarant, Mickey
C K&R
Marsh Posté le 06-11-2004 à 11:32:43
Code :
|
la premiere erreur est sur la déclaration du int argc
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 ?
Marsh Posté le 06-11-2004 à 11:34:49
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).
Marsh Posté le 06-11-2004 à 11:34:51
sinon tu peux essayer de compiler avec djgpp, c'est un portage de gcc sur les plateformes win32
Marsh Posté le 06-11-2004 à 11:35:50
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.
Marsh Posté le 06-11-2004 à 11:35:54
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. |
ok vais essayer d'aller me renseigner sur ce que le C K&R déjà
Marsh Posté le 06-11-2004 à 11:49:35
Lam's a écrit : C'est mort djgpp. Tu veux dire Mingw ? |
MinGW c'est compileur qui fonctionne sous windows pour compiler un code C pour nux ?
Marsh Posté le 06-11-2004 à 12:13:29
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 ?
Marsh Posté le 06-11-2004 à 12:16:15
Tu vas voir www.wxwidgets.org pour continuer à utiliser MinGW. En plus ton code sera portable vers Linux.
Marsh Posté le 06-11-2004 à 12:20:48
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 enfin si minGW sait le compiler
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é)
Marsh Posté le 06-11-2004 à 12:23:23
J'ai pas compris ta question...
Pence à regarder ça aussi: http://www.bloodshed.net/devcpp.html
Marsh Posté le 06-11-2004 à 12:25:55
Lam's a écrit : J'ai pas compris ta question... |
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 ?
Marsh Posté le 06-11-2004 à 12:35:33
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;
Marsh Posté le 06-11-2004 à 12:45:17
ReplyMarsh Posté le 06-11-2004 à 13:07:37
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
Marsh Posté le 06-11-2004 à 13:52:25
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
Marsh Posté le 06-11-2004 à 10:34:49
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 ( ) 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
---------------
http://www.zytratech.com