LINUX.ORG.RU

Не компилируется Easymotif

 ,


0

2

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

psplot.c: In function ‘doautoscalepol’:
psplot.c:311:20: error: ‘MINFLOAT’ undeclared (first use in this function); did you mean ‘MAXFLOAT’?
  311 |     float  xmax =  MINFLOAT     ;
      |                    ^~~~~~~~
      |                    MAXFLOAT
psplot.c:311:20: note: each undeclared identifier is reported only once for each function it appears in
psplot.c: In function ‘doautoscale’:
psplot.c:330:36: error: ‘MINFLOAT’ undeclared (first use in this function); did you mean ‘MAXFLOAT’?
  330 |   float xmin = MAXFLOAT  , xmax =  MINFLOAT  , ymin = MAXFLOAT   , ymax =  MINFLOAT   ;
В коде было определено так
#define MAXFLOAT  3.40282347e+38F
#define MINFLOAT  -MAXFLOAT

Как исправить?

А то пробовал менять на

#define MAXFLOAT  3.40282347e+38F
#define MINFLOAT  -3.40282347e+38F

И та же самая ошибка

Версия gcc

gcc version 12.2.0 (CRUX-x86_64-multilib)

★★★★★

Последнее исправление: vbcnthfkmnth123 (всего исправлений: 8)

В psplot.c замени

#ifndef MAXFLOAT
#define MAXFLOAT  3.40282347e+38F
#define MINFLOAT  -MAXFLOAT
#endif

на

#ifndef MAXFLOAT
#define MAXFLOAT  3.40282347e+38F
#endif
#ifndef MINFLOAT
#define MINFLOAT  -MAXFLOAT
#endif
DrBrown
()

Но там же #define обрамлён #ifdef.

Я не знаю, как правильно, но в <math.h> определяется только MAXFLOAT. Ваш psplot.c смотрит на то, определён ли MAXFLOAT, и если определён, не определяет MINFLOAT.

Вобще с MINFLOAT какая-то ерунда, его обычно определяют как FLT_MIN, что, вроде как, наименьшее положительное float-число (1.175494E-038).

mky ★★★★★
()

Всем спасибо. Переделал как

#ifndef MAXFLOAT
#define MAXFLOAT  3.40282347e+38F
#endif
#ifndef MINFLOAT
#define MINFLOAT  -MAXFLOAT
#endif
Теперь падает с такой ошибкой при сборке
gcc -o demo -g -O -DLINUX -DANSI  -DPD -DGRFORM -DOpenGL -I../include -I../include/PD     -L/usr/lib64   demo.o     ../lib/libeasymotif.a ../lib/libpsplot.a   ../lib/PD/libPD.a -lGL -lGLw -lXm -lXmu -lXpm -lXt  -lX11 -lXext  -lm -lz -lc  
/usr/bin/ld: cannot find -lGLw: No such file or directory
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:1070: demo] Error 1
make[1]: Leaving directory '/home/oleg/Downloads/EasyMotif/Demo'
Вроде нагуглил что это связано с Mesa3d, попробую её завтра пересобрать.

vbcnthfkmnth123 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.