On 8/7/2014 5:11 AM, Jonathan Wakely wrote:
On 7 August 2014 01:34, YuGiOhJCJ Mailing-List wrote:
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?
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.