This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: mingw-targeted cross-compiler question


On Wed, 22 Dec 2010 15:11:18 +0100, Kai Tietz <ktietz70@googlemail.com> wrote:

2010/12/22 <lemkemch@t-online.de>:
On Wed, 22 Dec 2010 14:13:15 +0100, Frédéric Bron <frederic.bron@m4x.org>
wrote:


I checked the Make file, it used this flag:
gcc -mno-cygwin -g -Wl,--add-stdcall-alias -Wl,--export-all-symbols ...

replace gcc by gcc-3 gcc 4 is now the default on cygwin but the cross compiler is not supported for that version. Frédéric

What do you mean by not supported? JonY maintains the cross compilers....

I meant that i686-w64-mingw32-gcc exists but not i686-w32-mingw32-gcc. I thought that w64 meant "built on win64" and mingw32 "run binary on win32". So it seems to me that with cygwin running on a 32 bit windows, it is not possible to cross compile to win32. However with a 64 bit windows you can produce win32 applications. However, I just tried to use i686-w64-mingw32-g++ on my win32 machine with a hello world program and it produces an binary that can be used from windows on that win32 machine. So my question to the list: what is the meaning of w64 in the name?

Well, I don't know but I'd really like to know what is the replacement these days for

gcc -mno-cygwin -mwindows x.c

I tried

i686-w64-mingw32-gcc -mwindows -m32 x.c

but get

x.c:35:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before
'WinMain'


and that also for all other option combinations that made sense to me.

Thanks,
Michael

Hi,


the -w64- within cross-compiler's triplet means that this compiler
uses mingw-w64 runtime headers and libraries. The architecture part of
triplet (i686|x86_64) makes the difference, if a cross-compiler
produces binaries for i686 (means 32-bit), or for x86_64  (means
64-bit) windows native.
Btw the -m32 is superflous for the i686-w64-mingw32 cross-compiler, as
it just produces 32-bit and has no 64-bit capabilities builtin.
Could you show please your x.c file, as the message you get is a
compiler error already. I would assume that you missed to include some
header, or you were defining something which cause here the harm.

Well, the program compiles just fine with the old gcc-3 -mno-cygwin but anyway, here's a stripped down version:


#define WINVER 0x0500 #include <windows.h>

int STDCALL WinMain (HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow) {
return 0;
}



orion> i686-w64-mingw32-gcc -mwindows -m32 xx.c
xx.c:4:13: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'WinMain'
orion> gcc-3 -mno-cygwin -mwindows -m32 xx.c
orion>


Thanks,
Michael


-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]