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

  FORUM HardWare.fr
  Programmation
  C

  Probleme compilation MacOSX

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme compilation MacOSX

n°2160843
serial_xp
Posté le 20-10-2012 à 18:08:41  profilanswer
 

Bonjour,
 
je me tourne vers vous afin de savoir si quelqu'un pourrait éclairer ma lanterne.
 
Pour notre cours de parallélisme, nous devons coder en C. Cependant, le programme codé lors de notre TP ne fonctionne pas sous MacOSX mais fonctionne bien sur Windows et Linux.  
Y a-t-il une options spécial a utiliser lors de la compilation sous MacOSX ou bien est-ce un problème lié a MacOSX?
 
Le code a testé sur :
Windows : fonctionne parfaitement.
Linux : fonctionne parfaitement.
MacOSX : mon MBA en 10.8, segfault, le MBP d'une collègue de promo, idem.
 
Merci d'avance pour vos réponses.
 
PS : si ce n'est pas bonne catégorie, ou bien si vous auriez un titre plus explicite pour mon problème, n'hésitez pas a m'en faire part.

mood
Publicité
Posté le 20-10-2012 à 18:08:41  profilanswer
 

n°2160846
Un Program​meur
Posté le 20-10-2012 à 19:38:16  profilanswer
 

Et tu n'envisages pas la possibilité qu'il y ait une erreur dans ton programme qui ne se révèle pas avec Windows et Linux mais bien avec MacOS? C'est pourtant ce que je ferais en premier.  
 


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2160847
serial_xp
Posté le 20-10-2012 à 19:42:13  profilanswer
 

Je l'ai envisagé, mais ayant relu code maintes fois de coté et mes collègues de leur cotés l'ayant aussi inspecté, nous n'avons rien trouvé de choquant.  
 
C'est une question ouverte que je me pose, et pour en avoir le cœur net, je suis entrain de passer mon Mac sous la version GNU de gcc.

n°2160850
Farian
Posté le 20-10-2012 à 19:46:22  profilanswer
 

Tout à fait d'accord avec le message précédent. Même si il ne faut pas exclure la possibilité que les fonctions appelées aient un fonctionnement différent selon les OS, la première chose à faire serait une passe de valgrind (ou équivalent) pour vérifier qu'il n'y a pas de problèmes dormants dans le code.
 
EDIT : Trop de temps pour taper mon message, et un autre message s'est intercalé :)


Message édité par Farian le 20-10-2012 à 19:47:19
n°2160851
serial_xp
Posté le 20-10-2012 à 19:50:04  profilanswer
 

Merci pour cette info, je teste de suite.

n°2160852
Un Program​meur
Posté le 20-10-2012 à 20:12:30  profilanswer
 

Et regarder où ça crashe dans un débuggeur?
 
(Je ne suis pas un nettement moins grand utilisateur de debuggeurs que la plupart des gens plus jeune que moi, mais l'investigation de départ des crash est une de mes utilisations)


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2160853
serial_xp
Posté le 20-10-2012 à 20:16:54  profilanswer
 

Le code que l'on doit fournir est relativement court (100 lignes de codes max on va dire) et n'ayant pas fait beaucoup de C auparavant, je ne pensais pas que c'était un langage aussi "sensible". Je vais chercher en ce sens.

 

Concernant, le bug, j'ai déjà identifié les lignes responsables mais même en changeant le style de codage, le bug reste le même.


Message édité par serial_xp le 20-10-2012 à 20:19:48
n°2160856
Un Program​meur
Posté le 20-10-2012 à 20:24:31  profilanswer
 

> je ne pensais pas que c'était un langage aussi "sensible".  
 
Disons qu'il faut chercher pour trouver plus sensible.
 
> Concernant, le bug, j'ai déjà identifié les lignes responsables mais même en changeant le style de codage, le bug reste le même.
 
Tu peux les donner (dans la balise adéquate) si tu veux.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°2160857
serial_xp
Posté le 20-10-2012 à 20:33:30  profilanswer
 

Un Programmeur a écrit :

> je ne pensais pas que c'était un langage aussi "sensible".  
 
Disons qu'il faut chercher pour trouver plus sensible.
 
> Concernant, le bug, j'ai déjà identifié les lignes responsables mais même en changeant le style de codage, le bug reste le même.
 
Tu peux les donner (dans la balise adéquate) si tu veux.


Voila le code : c'est un simple de multiplication de matrice, qui devra être parallélisé par après.
 
exercice3.c:

Code :
  1. #include "exercice3.h"
  2. void print_matrix(matrice *m)
  3. {
  4.     if (m == NULL) {
  5.         fprintf(stdout, "Pas de matrice a afficher!n";);
  6.     }
  7.     else
  8.     {
  9.         int i, j;
  10.         for (i=0; i < m->lines; i++)
  11.         {
  12.             fprintf(stdout, "(";);
  13.             for (j=0; j < m->cols; j++)
  14.             {
  15.                 fprintf(stdout, " %d ", m->value[i][j]);
  16.             }
  17.             fprintf(stdout, ";)n";);
  18.         }
  19.     }
  20. }
  21. matrice* generate_matrix(int lines, int cols)
  22. {
  23.     srand(time(NULL));
  24.     int i, j;
  25.    
  26.     matrice *m = malloc(sizeof(matrice));
  27.     m->cols = cols;
  28.     m->lines = lines;
  29.     m->value = malloc(sizeof(int)*lines);
  30.     for (i=0; i < lines; i++)
  31.     {
  32.         m->value[i] = malloc(sizeof(int)*cols);
  33.         for (j=0; j < cols; j++)
  34.         {
  35.             m->value[i][j] = rand() % (10);
  36.            }
  37.     }
  38.     return m;
  39. }
  40. matrice* multiply_matrix(matrice *m1, matrice *m2)
  41. {
  42.     if (m1->cols == m2->lines)
  43.     {
  44.         int i, j, k, calcul=m2->lines;
  45.    
  46.         matrice *result = generate_matrix(m1->lines, m2->cols);
  47.         for (i=0; i < result->lines;i++)
  48.         {
  49.             for (j=0; j < result->cols; j++)
  50.             {
  51.                 result->value[i][j] = 0;
  52.                 for (k=0; k < calcul; k++)
  53.                 {
  54.                     result->value[i][j] += m1->value[i][k] * m2->value[k][j];
  55.                 }
  56.             }
  57.         }
  58.         return result;
  59.     }
  60.     return NULL;
  61. }


exercice3.h:

Code :
  1. #ifndef EXERCICE_3
  2. #define EXERCICE_3
  3. #include <time.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. struct Matrice{
  7.     int cols;
  8.     int lines;
  9.     int** value;
  10. };
  11. typedef struct Matrice matrice;
  12. void print_matrix(matrice *m);
  13. matrice* generate_matrix(int cols, int lines);
  14. matrice* multiply_matrix(matrice *m1, matrice *m2);
  15. #endif


Message édité par serial_xp le 20-10-2012 à 20:35:40
n°2160858
Un Program​meur
Posté le 20-10-2012 à 20:50:24  profilanswer
 

Les mac ne seraient-ils pas en 64 bits alors que Windows et Linux sont en 32?
 

Code :
  1. m->value = malloc(sizeof(int)*lines);


à remplacer par

Code :
  1. m->value = malloc(sizeof(int*)*lines);


---------------
The truth is rarely pure and never simple (Oscar Wilde)
mood
Publicité
Posté le 20-10-2012 à 20:50:24  profilanswer
 

n°2160859
serial_xp
Posté le 20-10-2012 à 20:52:50  profilanswer
 

Pour le linux, je ne sais pas vu que c'était un de mes collègues qui a testé mais oui, tu as raison, mon mac est en 64 bits.

 

c'est résolu... (je me sens vraiment con d'être passé par dessus une bêtise pareil)

 

Merci pour ton aide.


Message édité par serial_xp le 20-10-2012 à 20:54:54

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

  Probleme compilation MacOSX

 

Sujets relatifs
Problème avec formulaire php - HELP!Problème d'affiche de flux Twittter
Problème ftpProblème de pointeurs
compilation sous visual studioprobleme aptana 3.2 et debugger
Problème compréhension fonction .itemProbleme firefox propriété scale
Probleme importation fichier.sql trop volumineuxProblème VBA Attachment Email
Plus de sujets relatifs à : Probleme compilation MacOSX


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