Discussion:
w32api: configure: error: C compiler cannot create executables
YuGiOhJCJ Mailing-List
2014-08-07 19:59:48 UTC
Permalink
Hello,

I am building a cross compiler (linux 32 bits -> windows 32 bits).
I have compiled and installed:
- binutils-2.24.51
- gcc-4.9.1 (with mingwrt-4.0.3.1 and w32api-4.0.3.1 headers)

But when I try to configure the w32api library, I got an error:
$ ./configure --prefix=/usr/i686-pc-mingw32 --build=`./config.guess` --host=i686-pc-mingw32 --disable-nls
bash: ./config.guess: No such file or directory
configure: WARNING: unrecognized options: --disable-nls
configure: WARNING: if you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-mingw32
checking target system type... i686-pc-mingw32
checking for i686-pc-mingw32-gcc... i686-pc-mingw32-gcc
checking whether the C compiler works... no
configure: error: in `/tmp/build/w32api-4.0.3-1.mingw32-src':
configure: error: C compiler cannot create executables
See `config.log' for more details

As you can see, there is a missing "config.guess" file in the archive.
Also, the "--disable-nls" option is not available.
Maybe it can explain why the C compiler is recognize by the configure script as not working.

Do you have any idea why I am unable to compile this w32api please?

Thank you.
Best regards.
Jonathan Wakely
2014-08-07 20:05:02 UTC
Permalink
Post by YuGiOhJCJ Mailing-List
Hello,
I am building a cross compiler (linux 32 bits -> windows 32 bits).
- binutils-2.24.51
- gcc-4.9.1 (with mingwrt-4.0.3.1 and w32api-4.0.3.1 headers)
$ ./configure --prefix=/usr/i686-pc-mingw32 --build=`./config.guess` --host=i686-pc-mingw32 --disable-nls
bash: ./config.guess: No such file or directory
configure: WARNING: unrecognized options: --disable-nls
configure: WARNING: if you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-mingw32
checking target system type... i686-pc-mingw32
checking for i686-pc-mingw32-gcc... i686-pc-mingw32-gcc
checking whether the C compiler works... no
configure: error: C compiler cannot create executables
See `config.log' for more details
As you can see, there is a missing "config.guess" file in the archive.
Is it supposed to be there?
Post by YuGiOhJCJ Mailing-List
Also, the "--disable-nls" option is not available.
Then why are you using it?
Post by YuGiOhJCJ Mailing-List
Maybe it can explain why the C compiler is recognize by the configure script as not working.
Do you have any idea why I am unable to compile this w32api please?
w32api is not part of GCC, maybe you should ask on a mingw list, but
it looks like you're calling its configure wrong and then complaining
that it doesn't work.
YuGiOhJCJ Mailing-List
2014-08-07 21:05:53 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.24.51
- gcc-4.9.1 (with mingwrt-4.0.3.1 and w32api-4.0.3.1 headers)
$ ./configure --prefix=/usr/i686-pc-mingw32 --build=`./config.guess` --host=i686-pc-mingw32 --disable-nls
bash: ./config.guess: No such file or directory
configure: WARNING: unrecognized options: --disable-nls
configure: WARNING: if you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-mingw32
checking target system type... i686-pc-mingw32
checking for i686-pc-mingw32-gcc... i686-pc-mingw32-gcc
checking whether the C compiler works... no
configure: error: C compiler cannot create executables
See `config.log' for more details
As you can see, there is a missing "config.guess" file in the archive.
Is it supposed to be there?
Post by YuGiOhJCJ Mailing-List
Also, the "--disable-nls" option is not available.
Then why are you using it?
Post by YuGiOhJCJ Mailing-List
Maybe it can explain why the C compiler is recognize by the configure script as not working.
Do you have any idea why I am unable to compile this w32api please?
w32api is not part of GCC, maybe you should ask on a mingw list, but
it looks like you're calling its configure wrong and then complaining
that it doesn't work.
For the "config.guess" file, yes it was supposed to be there because in w32api-3.17 this file was present.
In w32api-4.0.3.1, it is absent.
This file is useful to guess my platform:
$ ./config.guess
i686-pc-linux-gnu
So, instead of calling this config.guess script, I can replace it by the "i686-pc-linux-gnu" string.
It is just strange that this file is missing.

For the "--disable-nls" option it is because I don't need Native Language Support for this compiler.
This option was available for w32api-3.17 but seems to be absent from the w32api-4.0.3.1 release.

Yes, I am aware that this is a problem of w32api (which is part of the mingw project).
This mailing-list is for discussions about gcc.
On the mailing-list of mingw, I have already asked, and there is a lack of responses so I try here.
I am using gcc-4.9.1 to build my cross-compiler as you can see above, so we can say that this discussion is not completely out of the mailing-list focus.

I am wondering why my C compiler cannot create executables.
I have compiled it with these options:
$ ../gcc-4.9.1/configure --prefix=/usr --target=i686-pc-mingw32 --disable-shared --enable-languages=c --disable-nls

I have always used these options for building my cross-compiler.
Today, I try with a new version of gcc and it is a failure.
Instead of downgrading, I would like to understand better why it does not work with the latest gcc, binutils, w32api and mingwrt.
If anyone has an idea about that, please tell me.
Jonathan Wakely
2014-08-07 22:07:46 UTC
Permalink
Post by YuGiOhJCJ Mailing-List
For the "config.guess" file, yes it was supposed to be there because in w32api-3.17 this file was present.
In w32api-4.0.3.1, it is absent.
$ ./config.guess
i686-pc-linux-gnu
So, instead of calling this config.guess script, I can replace it by the "i686-pc-linux-gnu" string.
It's used by configure to guess you platform if you don't tell it, so
using the script to tell configure is just pointless, you're setting
the value to what will be guessed anyway.

Don't use the --build option, and configure will guess it for you (by
calling build.aux/config,guess ... apparently you didn't look very
hard for the file).
Post by YuGiOhJCJ Mailing-List
It is just strange that this file is missing.
It's just moved.

Stop using --build=`config.guess` because it's pointless, and the
problem goes away.
Post by YuGiOhJCJ Mailing-List
For the "--disable-nls" option it is because I don't need Native Language Support for this compiler.
This option was available for w32api-3.17 but seems to be absent from the w32api-4.0.3.1 release.
But w32api is not the compiler. If you don't want NLS in the compiler,
pass --disable-nls to the compiler, you don't need to pass it to other
things. So you can just stop using that option too.
Post by YuGiOhJCJ Mailing-List
Yes, I am aware that this is a problem of w32api (which is part of the mingw project).
This mailing-list is for discussions about gcc.
On the mailing-list of mingw, I have already asked, and there is a lack of responses so I try here.
I am using gcc-4.9.1 to build my cross-compiler as you can see above, so we can say that this discussion is not completely out of the mailing-list focus.
Just because you use GCC to compile some code doesn't make this list
the right place to ask about that code.
Post by YuGiOhJCJ Mailing-List
I am wondering why my C compiler cannot create executables.
$ ../gcc-4.9.1/configure --prefix=/usr --target=i686-pc-mingw32 --disable-shared --enable-languages=c --disable-nls
Look in the config.log file, it will show why it failed.
Post by YuGiOhJCJ Mailing-List
I have always used these options for building my cross-compiler.
Today, I try with a new version of gcc and it is a failure.
Because you used a different version of w32api, it has nothing to do
with the new GCC.
Post by YuGiOhJCJ Mailing-List
Instead of downgrading, I would like to understand better why it does not work with the latest gcc, binutils, w32api and mingwrt.
If anyone has an idea about that, please tell me.
The w32api package changed, but that's nothing to do with GCC.
YuGiOhJCJ Mailing-List
2014-08-07 23:37:55 UTC
Permalink
Post by Jonathan Wakely
Post by YuGiOhJCJ Mailing-List
For the "config.guess" file, yes it was supposed to be there because in w32api-3.17 this file was present.
In w32api-4.0.3.1, it is absent.
$ ./config.guess
i686-pc-linux-gnu
So, instead of calling this config.guess script, I can replace it by the "i686-pc-linux-gnu" string.
It's used by configure to guess you platform if you don't tell it, so
using the script to tell configure is just pointless, you're setting
the value to what will be guessed anyway.
Don't use the --build option, and configure will guess it for you (by
calling build.aux/config,guess ... apparently you didn't look very
hard for the file).
Post by YuGiOhJCJ Mailing-List
It is just strange that this file is missing.
It's just moved.
Stop using --build=`config.guess` because it's pointless, and the
problem goes away.
Post by YuGiOhJCJ Mailing-List
For the "--disable-nls" option it is because I don't need Native Language Support for this compiler.
This option was available for w32api-3.17 but seems to be absent from the w32api-4.0.3.1 release.
But w32api is not the compiler. If you don't want NLS in the compiler,
pass --disable-nls to the compiler, you don't need to pass it to other
things. So you can just stop using that option too.
Post by YuGiOhJCJ Mailing-List
Yes, I am aware that this is a problem of w32api (which is part of the mingw project).
This mailing-list is for discussions about gcc.
On the mailing-list of mingw, I have already asked, and there is a lack of responses so I try here.
I am using gcc-4.9.1 to build my cross-compiler as you can see above, so we can say that this discussion is not completely out of the mailing-list focus.
Just because you use GCC to compile some code doesn't make this list
the right place to ask about that code.
Post by YuGiOhJCJ Mailing-List
I am wondering why my C compiler cannot create executables.
$ ../gcc-4.9.1/configure --prefix=/usr --target=i686-pc-mingw32 --disable-shared --enable-languages=c --disable-nls
Look in the config.log file, it will show why it failed.
Post by YuGiOhJCJ Mailing-List
I have always used these options for building my cross-compiler.
Today, I try with a new version of gcc and it is a failure.
Because you used a different version of w32api, it has nothing to do
with the new GCC.
Post by YuGiOhJCJ Mailing-List
Instead of downgrading, I would like to understand better why it does not work with the latest gcc, binutils, w32api and mingwrt.
If anyone has an idea about that, please tell me.
The w32api package changed, but that's nothing to do with GCC.
Yes, you have totally right: That's nothing to do with gcc.
In fact, that was a problem occurring on the last w32api-4.0.3.1 tarball.
If I keep the old one (w32api-3.17), it works.
So, no problem to build a cross-compiler using:
- binutils-2.24.51
- gcc-4.9.1
- mingwrt-3.20.2
- w32api-3.17

Thanks for the support (and sorry for the wrong mailing-list).

Kai Ruottu
2014-08-07 21:07:37 UTC
Permalink
Post by YuGiOhJCJ Mailing-List
Hello,
I am building a cross compiler (linux 32 bits -> windows 32 bits).
- binutils-2.24.51
- gcc-4.9.1 (with mingwrt-4.0.3.1 and w32api-4.0.3.1 headers)
I understand this as the creation of the (bare) gcc-4.9.1 succeeding
with only
the MinGW headers... But I don't understand why you didn't install the full
prebuilt 4.0.3.1 runtime and w32api stuff...
This I don't understand... Why you are trying to reinvent the wheel and
recreate
the w32api headers and import libraries for the MS DLLs?

I myself have done this last when making a variation of the w32api for
the Win32s
subset used with the Win3.1/Win32s 16/32-bit hybrid opsys in the 1990's...
Post by YuGiOhJCJ Mailing-List
Do you have any idea why I am unable to compile this w32api please?
Probably it wasn't thought that someone wants to reinvent the wheel with the
import libraries, if not being one of the MinGW-maintainers. Are you one
of them
but don't know how they will be recreated after some fixes?
Loading...