2009-03-04 66 views
3

我有一個PS3,我已經安裝了YDL 6.1和SDK 3.1,並且一切似乎都正常,因爲我可以編譯和運行示例。不過,我在編寫自己的程序時遇到了一些問題。我創建了一個小型測試案例,可以查明失敗的原因。我有以下代碼:在Y3 6.1和Cell SDK 3.1的PS3上從math.h未定義對'sqrt'的引用?

// 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),儘管os x不需要鏈接的原因可能來自許多來源(libc vs Apple libs,蘋果對gcc的修改等)。 – 2009-03-04 21:54:08