Am 02.02.2017 um 22:12 schrieb Thomas Nilefalk:
Using 'i686-pc-cygwin-gcc' creates an executable but that is un-runnable
in a Cygwin64 environment because the cygwin1.dll is a 64-bit version
and not compatible with the produced executable. A cygwin32 DLL needs to
be put first in the path to make the executable run.
Is this by design?
Pretty much, yes. Windows itself already has a seriously hard time
mixing and matching 32-bit and 64-bit executables and their DLLs. The
tricks MS uses to pull that off range from outright scary to
Marx-Brothers-grade hilarious, depending how you look at them.
As I see it, Cygwin rightfully opted for sanity here by keeping the two
worlds separate.
At least it seems to me that 'gcc -m32' could be
taken to mean 'create an executable in the current ABI-environment
(cygwin64) which uses a 32-bit architecture'.
No, it really can't. -m32 does what the GCC documentation says: it
makes GCC generate 32-bit x86 code. Nothing in there so much as
suggests that such code will actually work in a given ABI environment.
In the case of Cygwin64 it won't.
'how can I make a 32-bit compiled cygwin program run under cygwin64'?
You can't. Nor can anybody else. For a Cygwin64-based program, Cygwin32
is a bona fide cross-compilation platform rather than just some subset
of the same platform. The same holds vice versa.
--
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