2009-03-04 6 views
3

У меня есть PS3, на котором я установил YDL 6.1 и SDK 3.1, и все, кажется, работает нормально, поскольку я могу скомпилировать и запустить примеры. Тем не менее, у меня возникли проблемы с написанием собственных программ. Я создал небольшой тестовый пример, который, по-видимому, указывает причину сбоя. У меня есть следующий код:Неопределенная ссылка на 'sqrt' от math.h на PS3 с YDL 6.1 и 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; 
} 

Когда я затем запустить

ppu-gcc mathtest.c 

Я получаю следующую ошибку

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

Я уже проверил, чтобы убедиться, что math.h существует в этой системе и он определяет sqrt. Я также пробовал использовать это:

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

, но это приводит к такой же ошибке. Я в замешательстве, у кого есть идеи?

ответ

4

Я иногда получал подобные ошибки в Linux, используя -lm в качестве параметра gcc. Возможно, и здесь. Параметр указывает компоновщику также включить математическую библиотеку.

+0

Да, это, кажется, исправить. Странно, как некоторые платформы (Linux) требуют привязки к математике, в то время как другие не делают (OS X), хотя причины, по которым os x не требует связывания, могут быть связаны с рядом источников (libc vs apple libs, изменения яблок в gcc , и т.д). –