2009-03-04 15 views
3

J'ai une PS3 sur laquelle j'ai installé YDL 6.1 et SDK 3.1 et tout semble fonctionner correctement, car je peux compiler et exécuter les exemples. Cependant, j'ai rencontré quelques problèmes avec l'écriture de mes propres programmes. J'ai créé un petit test qui semble indiquer la cause de l'échec. J'ai le code suivant:Référence non définie à 'sqrt' de math.h sur PS3 avec YDL 6.1 et Cell SDK 3.1?

// mathtest.c 
#include <stdio.h> 
#include <math.h> 

int main() 
{ 
    double param, result; 
    param = 1024.0; 
    result = sqrt (param); 
    printf ("sqrt(%lf) = %lf\n", param, result); 
    return 0; 
} 

Quand je lance alors

ppu-gcc mathtest.c 

Je reçois l'erreur suivante

/tmp/ccFqwJdG.o:(.text+0x20): undefined reference to `sqrt' 
collect2: ld returned 1 exit status 

je l'ai déjà vérifié pour vous assurer que math.h existe sur ce système et il définit sqrt. J'ai aussi déjà essayé de courir ceci:

ppu-gcc -I/usr/includes/ mathtest.c 

mais il en résulte la même erreur. Je suis confus, quelqu'un a des idées?

Répondre

4

J'ai parfois eu des erreurs similaires sur Linux, en utilisant -lm comme un paramètre gcc aidé là. Peut-être que c'est le cas ici aussi. Le paramètre indique à l'éditeur de liens d'inclure également la bibliothèque mathématique.

+0

Oui, cela semble le réparer. Étrange comment certaines plateformes (Linux) nécessitent une liaison avec les maths, alors que d'autres ne le font pas (OS X), bien que les raisons pour lesquelles os x ne nécessite pas de lien puissent provenir de plusieurs sources (libc vs apple libs, apples modifications to gcc , etc). –