Discussion:
error: 'LDBL_MIN_EXP' undeclared
YuGiOhJCJ Mailing-List
2014-08-07 00:34:33 UTC
Permalink
Hello,

I am building a cross compiler (linux 32 bits -> windows 32 bits).
I have compiled:
- binutils-2.22
- gcc-4.8.0
- w32api library

But when I try to compile mingwrt library, I got an error:
$ make
Making `all' in `mingwex'
make[1]: Entering directory `/home/yugiohjcj/documents/downloads/software/mingwrt-3.20-2-mingw32/mingwex'
i686-pc-mingw32-gcc -c -g -O2 -Wall -fomit-frame-pointer -I. -I.. -I../include -nostdinc -iwithprefixbefore include -I ../../w32api/include ./math/hypotl.c -o hypotl.o
./math/hypotl.c: In function 'hypotl':
./math/hypotl.c:63:15: error: 'LDBL_MAX_EXP' undeclared (first use in this function)
if (exx > LDBL_MAX_EXP)
^
./math/hypotl.c:63:15: note: each undeclared identifier is reported only once for each function it appears in
./math/hypotl.c:68:13: error: 'LDBL_MIN_EXP' undeclared (first use in this function)
if (exx < LDBL_MIN_EXP)
^
make[1]: *** [hypotl.o] Error 1
make[1]: Leaving directory `/home/yugiohjcj/documents/downloads/software/mingwrt-3.20-2-mingw32/mingwex'
make: *** [mingwex] Error 2

What is this undeclared LDBL_MIN_EXP element?

Thank you.
Best regards.
Jonathan Wakely
2014-08-07 09:11:07 UTC
Permalink
Post by YuGiOhJCJ Mailing-List
Hello,
I am building a cross compiler (linux 32 bits -> windows 32 bits).
- binutils-2.22
- gcc-4.8.0
- w32api library
$ make
Making `all' in `mingwex'
make[1]: Entering directory `/home/yugiohjcj/documents/downloads/software/mingwrt-3.20-2-mingw32/mingwex'
i686-pc-mingw32-gcc -c -g -O2 -Wall -fomit-frame-pointer -I. -I.. -I../include -nostdinc -iwithprefixbefore include -I ../../w32api/include ./math/hypotl.c -o hypotl.o
./math/hypotl.c:63:15: error: 'LDBL_MAX_EXP' undeclared (first use in this function)
if (exx > LDBL_MAX_EXP)
^
./math/hypotl.c:63:15: note: each undeclared identifier is reported only once for each function it appears in
./math/hypotl.c:68:13: error: 'LDBL_MIN_EXP' undeclared (first use in this function)
if (exx < LDBL_MIN_EXP)
^
make[1]: *** [hypotl.o] Error 1
make[1]: Leaving directory `/home/yugiohjcj/documents/downloads/software/mingwrt-3.20-2-mingw32/mingwex'
make: *** [mingwex] Error 2
What is this undeclared LDBL_MIN_EXP element?
That looks like part of mingw, not GCC.
Tim Prince
2014-08-07 12:35:54 UTC
Permalink
Post by Jonathan Wakely
Post by YuGiOhJCJ Mailing-List
Hello,
I am building a cross compiler (linux 32 bits -> windows 32 bits).
- binutils-2.22
- gcc-4.8.0
- w32api library
$ make
Making `all' in `mingwex'
make[1]: Entering directory `/home/yugiohjcj/documents/downloads/software/mingwrt-3.20-2-mingw32/mingwex'
i686-pc-mingw32-gcc -c -g -O2 -Wall -fomit-frame-pointer -I. -I.. -I../include -nostdinc -iwithprefixbefore include -I ../../w32api/include ./math/hypotl.c -o hypotl.o
./math/hypotl.c:63:15: error: 'LDBL_MAX_EXP' undeclared (first use in this function)
if (exx > LDBL_MAX_EXP)
^
./math/hypotl.c:63:15: note: each undeclared identifier is reported only once for each function it appears in
./math/hypotl.c:68:13: error: 'LDBL_MIN_EXP' undeclared (first use in this function)
if (exx < LDBL_MIN_EXP)
^
make[1]: *** [hypotl.o] Error 1
make[1]: Leaving directory `/home/yugiohjcj/documents/downloads/software/mingwrt-3.20-2-mingw32/mingwex'
make: *** [mingwex] Error 2
What is this undeclared LDBL_MIN_EXP element?
That looks like part of mingw, not GCC.
My Windows installations of gcc (including mingw) have their own
<float.h> built automatically as an apparently standard part of gcc,
containing
#define LDBL_MIN_EXP __LDBL_MIN_EXP__
and gcc -c -E -dM mains.c|grep LDBL_MIN_EXP shows
#define __LDBL_MIN_EXP__ (-16381)
In pre-built i686 mingw you need the mingw64-i686*-headers installation,
which I suppose is needed in the target directory to build cross compiler.
I'm not clear on the extent to which long double is supported in various
Windows gcc implementations, but this much apparently is expected in
current versions.
So I would have thought that you would have this defined as a result of
building your gcc.

Loading...