Неопределенная ссылка на sqrt из math.h на PS3 с YDL 6.1 и Cell SDK 3.1?

У меня есть PS3, на которую я установил YDL 6.1 и 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

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


person Paul Wicks    schedule 04.03.2009    source источник


Ответы (1)


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

person schnaader    schedule 04.03.2009
comment
Да, похоже, это решило. Странно, но некоторые платформы (Linux) требуют связывания по математике, а другие - нет (OS X), хотя причины, по которым os x не требует связывания, могут происходить из ряда источников (libc vs apple libs, модификации apples в gcc , и т.д). - person Paul Wicks; 05.03.2009