# RFC: Cygwin 64 bit?

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Jul 8 20:31:00 GMT 2011

```On Jul  8 14:07, Yaakov (Cygwin/X) wrote:
> On Fri, 2011-07-08 at 11:56 +0200, Corinna Vinschen wrote:
> > Where did you get the mingw64 gpg-error stuff from?  It's not in the
> > Cygwin distro.
>
> It's in Ports.

Uh, ok, thanks.

> > - if we stick to a single /bin directory, we have to use another prefix
> >   like "cyg64", or
>
> Which means changing all build systems and library loaders.
>
> I just realized another problem with this that even patching dlopen()
> won't solve: a module loading system may construct a file path, then
> check the module's existence before attempting to load it.
>
> Unless we use "cyg64" only for non-module shared libraries, and leave
> "cyg" for modules (which would be under /usr/lib64 and loaded by fully
> qualified path anyway).  Then dlopen() could do the cyg -> cyg64 dance
> only if no absolute path is given.  I know, I was against this at first,
> but with a modified dlopen() it might work.

As far as I can see, most modules don't use a prefix at all.  Neither
python, nor perl, nor ruby modules have a "lib" or "cyg" prefix.
Ok, the openssl engines have a prefix, but it's "lib".

> > - we have to put the DLLs into a separate directory like /usr/lib64.
> >   Separate directory has the problem that it always has to be in \$PATH,
> >   which is not such a good idea, IMHO.
>
> I presume you mean because of all the other stuff (*.a, *.la) that
> resides there.  Is that really so bad though?  At least we have
> EXECIGNORE now.

No, that's not the reason.  THe reason is the old problem that the
start of a Cygwin application from a native Win32 process fails,
unless C:\cygwin\lib64 is in %Path%.  The first process of a Cygwin
process tree is obviously always called from a native process.
That means, you must either set \$PATH in the Win32 environment, or
your shortcuts must have C:\cygwin\lib64 as start directory, or
you must start all Cygwin processes from a .BAT file which adds
C:\cygwin\lib64 to %Path% before starting bash, tcsh or whatever.

It also looks and feels wrong to have a lib path in \$PATH.

Of course, if a relative ..\lib64\cygfoo.dll path in executables works,