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


2010/12/22  <lemkemch@t-online.de>:
> 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
>
>

Well, the issue is STDCALL. We don't define this macro. Sorry, can
find a single hint on that in msdn. Use here instead the standard
WINAPI and it builds on all compilers you are using.

Regards,
Kai

-- 
|? (\_/) This is Bunny. Copy and paste
| (='.'=) Bunny into your signature to help
| (")_(") him gain world domination

--
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]