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: Appropriate expectation on the degree of cygwin and MS interoperability


On 1/1/2010 20:06, Neil.Mowbray@calgacus.com wrote:
Folks,

A bit of a vague question but any greater clarity concerning the appropriate
level of interoperability between Cygwin and MS would be appreciated.

I have my Windows 6 and 7 platforms configured to build software using
different toolchains, the most common being (1) Visual Studio 10 and (2)
Cygwin with gcc-4.

When using the Visual Studio toolchain I will prefer a cygwin tool over a
MS tool, so for example, I always use bash and gnu make and never use the
cmd shell/power shell or nmake.  Taking this further, I will try to use
nm over dumpbin and ar over lib.

For the most part the cygwin tools interoperate with MS artifacts but
it does break down, especially, with 64bit artifacts.  For example, nm
can work with 32bit object files created by MS cl.exe but it cannot
work with 64bit MS object files (unrecognised file format).

The question is: how far should I expect the interoperability to go?
For example, is the fact that nm cannot handle 64bit MS object files
a (1) defeat in cygwin/nm or (2) I should be grateful that it works
with 32bit files and otherwise lower my expectation?

I suppose at its core the question is about the intent of cygwin.  Is
it (1) to provide unix like capabilities to a MS platform (in which case
one would expect/demand a high degree of interoperability), or
(2) to provide a unix like island inside a MS platform?

The problem with (2) is one cannot really stay isolated from the
host MS environment.

My previous question of how/if one can use cyginw *.h *.dll *.a
artifacts in a MS compiled program is essentaily the same theme
although I have lower expectations that it is possible.

Any pointers?

Hi,


for nm to recognize 64bit objects, you need to rebuild binutils to recognize 64bit objects. Use --enable-target=i686-pc-cygwin,x86_64-w64-mingw32 with binutils configure. Beware that MSVC now uses the "short" library format instead of the older "long" library format used by the GNU toolchain.

See <http://mingw-w64.sourceforge.net/> for toolchains targeting win64.

IMHO Cygwin is more of an island, you're supposed to use Cygwin tools only under Cygwin. Others might have different opinions.

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