X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=-0.4 required=5.0 tests=AWL,BAYES_40,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: lemkemch AT t-online DOT de Subject: Re: mingw-targeted cross-compiler question Date: Wed, 22 Dec 2010 15:26:32 +0100 Lines: 85 Message-ID: References: <30467239 DOT post AT talk DOT nabble DOT com> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15; format=flowed; delsp=yes Content-Transfer-Encoding: 8bit User-Agent: Opera Mail/10.63 (Win32) X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Wed, 22 Dec 2010 15:11:18 +0100, Kai Tietz wrote: > 2010/12/22 : >> On Wed, 22 Dec 2010 14:13:15 +0100, Frédéric Bron >> >> 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 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