Компиляция C арифметики с плавающей точкой в ​​OSX для программы Шевчука Triangle - PullRequest
3 голосов
/ 22 января 2011

Этот вопрос говорит о том, что лучший способ триангуляции многоугольника с отверстиями - это использовать библиотеку Треугольника Шевчука , но у меня возникают проблемы при компиляции на моем Mac OSX.Это очень популярная программа, которая существует уже некоторое время, и поэтому должна быть относительно легкой для компиляции, я просто неопытен с C.

Это ошибка, которую я получаю:

$ make
cc -O -DLINUX -I/usr/X11R6/include -L/usr/X11R6/lib -o ./triangle ./triangle.c -lm
Undefined symbols:
  "__FPU_SETCW", referenced from:
   _exactinit in ccrEJvxc.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [triangle] Error 1

Я пытаюсь закомментировать некоторые флаги (например, #define LINUX и т. Д.), Но я получаю различный набор ошибок для каждой комбинации.

Может ли кто-нибудь провести меня черезшаг, как скомпилировать (и, возможно, вызвать) эту программу на Mac?

Ответы [ 2 ]

4 голосов
/ 21 октября 2011

Мне удалось скомпилировать в OS X, удалив флаг -DLINUX из определения CSWITCHES в make-файле, так как fpu_control.h, похоже, зависит от linux.

0 голосов
/ 22 января 2011

Я не верю, что это стандартная функция, и в любом случае я верю, что Mac ... чье использование архитектуры Intel после SSE ... никогда не имело причины поддерживать операции FPU в стиле 387.

Итак, ваш код специфичен для Linux.Вы можете либо удалить специфичный для Linux код, либо реализовать ничего не делающие версии его точек входа.

Я бы сам этого не сделал, но вам может сойти с рук:

$ cat > /usr/include/fpu_control.h

#define _FPU_SETCW(cw) // nothing
#define _FPU_GETCW(cw) // nothing

Донне беспокойтесь о нулевых реализациях.Вам не нужно настраивать исключение FPU и режимы округления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...