This is the mail archive of the cygwin-developers 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: Latest 64 bit test stuff on sourceware


On Feb 20 19:56, Andy Koppe wrote:
> On 15 February 2013 15:29, Corinna Vinschen wrote:
> > Hi guys,
> >
> > I just uploaded all the latest 64 bit stuff to
> > ftp://cygwin.com/pub/cygwin/64bit/
> >
> > The main change here is what has been discussed in
> > http://cygwin.com/ml/cygwin-developers/2013-02/msg00029.html
> >
> > - The cygwin DLL is named cygwin1.dll rather than cyg64win1.dll.
> > - The DLL library prefix is "cyg" rather than "cyg64".
> > - The link library search path is /usr/lib, rather than /usr/lib64.
> >
> > Here's what you get:
> >
> > - binary-toolchain-x86_64-pc-linux-x-x86_64-pc-cygwin-20130215.tar.xz
> >
> >     A complete binary x86_64 Linux cross toolchain, latest patches.
> 
> Apparently this one can't find its Win32 libraries:
> 
> $ cat test.c
> main(){}
> 
> $ x86_64-pc-cygwin-gcc test.c
> /home/andy/opt/x86_64-pc-cygwin/bin/../lib/gcc/x86_64-pc-cygwin/4.8.0/../../../../x86_64-pc-cygwin/bin/ld:
> cannot find -ladvapi32
> /home/andy/opt/x86_64-pc-cygwin/bin/../lib/gcc/x86_64-pc-cygwin/4.8.0/../../../../x86_64-pc-cygwin/bin/ld:
> cannot find -lshell32
> /home/andy/opt/x86_64-pc-cygwin/bin/../lib/gcc/x86_64-pc-cygwin/4.8.0/../../../../x86_64-pc-cygwin/bin/ld:
> cannot find -luser32
> /home/andy/opt/x86_64-pc-cygwin/bin/../lib/gcc/x86_64-pc-cygwin/4.8.0/../../../../x86_64-pc-cygwin/bin/ld:
> cannot find -lkernel32
> collect2: error: ld returned 1 exit status

This really puzzles me.  The toolchain I uploaded is the exact toolchain
I'm using on Linux right now.  And for me, building applications works.
I built the packages I uploaded to the 64bit/install dir with it and
your STC works fine for me.

> A somewhat related issue: in the mintty makefile, I tried to work
> around the fact that there are two libuuids, one in the main library
> directory and one in its w32api subdirectory, by adding -L`$(HOST)-gcc
> -print-sysroot`/usr/lib/w32api to the link line, so as to pick up the
> w32api one. (Incidentally that should also work around the issue
> above.) Unfortunately that doesn't work with the Linux-hosted
> cross-compiler because that returns nothing for -print-sysroot,
> whereas Yaakov's Cygwin-32-to-64 cross-compiler does return the
> appropriate directory.

The toolchain I created on Linux is not using --with-sysroot.  All
target files are installed into $(exec_prefix)/$(target_alias) and
expected there by the compiler.  For testing I moved away
/ext/redhat/x86_64-pc-cygwin/x86_64-pc-cygwin/lib/w32api/libkernel32.a
and I got

  $ x86_64-pc-cygwin-gcc -g test.c
  /ext/redhat/x86_64-pc-cygwin/bin/../lib/gcc/x86_64-pc-cygwin/4.8.0/../../../../x86_64-pc-cygwin/bin/ld: cannot find -lkernel32
  collect2: error: ld returned 1 exit status

If I move libkernel32.a back, linking works.

> Is there a better approach for dealing with that, other than requiring
> the library directory to be passed into the makefile?

Where is the non w32api libuuid.a coming from?  I don't have such a 
file.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]