Subject: Re: "GCC is not found" and "compiler cannot create executables" errors
From: david sastre <[email-masked]>
To: [email-masked]
Date: Fri, 9 Apr 2010 11:26:27 +0200
List-Id: <cygwin.cygwin.com>

Hello,

>Csaba Raduly wrote:
>I think it's time for
>
>cygcheck /usr/lib/gcc/i686-pc-cygwin/4.3.4/cc1.exe
>
>Perhaps one of these is missing:
> C:\cygwin\bin\cyggmp-3.dll
> C:\cygwin\bin\cygmpfr-1.dll

Not exactly, but that was the main problem:

$ cygcheck /usr/lib/gcc/i686-pc-cygwin/4.3.4/cc1.exe
C:\cygwin\lib\gcc\i686-pc-cygwin\4.3.4\cc1.exe
  C:\cygwin\bin\cyggcc_s-1.dll
    C:\cygwin\bin\cygwin1.dll
      C:\WINDOWS\system32\ADVAPI32.DLL
        C:\WINDOWS\system32\KERNEL32.dll
          C:\WINDOWS\system32\ntdll.dll
        C:\WINDOWS\system32\RPCRT4.dll
          C:\WINDOWS\system32\Secur32.dll
  C:\cygwin\bin\cyggmp-3.dll
  C:\cygwin\usr\local\bin\cygmpfr-1.dllcygcheck:
C:\cygwin\usr\local\bin\cygmpfr-1.dll is a symlink instead of a DLL

I have a locally compiled version of GNU mpfr, installed used stow, which
builds a pseudo fs using symlinks.
With local mpfr unstowed, cygcheck output is:

$ cygcheck /usr/lib/gcc/i686-pc-cygwin/4.3.4/cc1.exe
C:\cygwin\lib\gcc\i686-pc-cygwin\4.3.4\cc1.exe
  C:\cygwin\bin\cyggcc_s-1.dll
    C:\cygwin\bin\cygwin1.dll
      C:\WINDOWS\system32\ADVAPI32.DLL
        C:\WINDOWS\system32\KERNEL32.dll
          C:\WINDOWS\system32\ntdll.dll
        C:\WINDOWS\system32\RPCRT4.dll
          C:\WINDOWS\system32\Secur32.dll
  C:\cygwin\bin\cyggmp-3.dll
  C:\cygwin\bin\cygmpfr-1.dll

I have restowed the package, but this time I deleted the symlink pointing to
cygmpfr-1.dll, and placed a copy of it in /usr/local/bin.
Now cygcheck output reflects this:

$ cygcheck /usr/lib/gcc/i686-pc-cygwin/4.3.4/cc1.exe
C:\cygwin\lib\gcc\i686-pc-cygwin\4.3.4\cc1.exe
  C:\cygwin\bin\cyggcc_s-1.dll
    C:\cygwin\bin\cygwin1.dll
      C:\WINDOWS\system32\ADVAPI32.DLL
        C:\WINDOWS\system32\KERNEL32.dll
          C:\WINDOWS\system32\ntdll.dll
        C:\WINDOWS\system32\RPCRT4.dll
          C:\WINDOWS\system32\Secur32.dll
  C:\cygwin\bin\cyggmp-3.dll
  C:\cygwin\usr\local\bin\cygmpfr-1.dll

And gcc is back to life:

$ ./configure
checking for gcc... gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for a BSD-compatible install... /usr/bin/install -c
checking whether make sets $(MAKE)... yes
.........

So now I have a question:
What's the problem with C:\cygwin\usr\local\bin\cygmpfr-1.dll being a symlink
instead of a file?
Is it related to the fact that cygcheck's output uses DOS pathnames
and/or doesn't
understand POSIX pathnames? (note that I'm totally ignorant about
cygcheck internals)

BTW ldd output doesn't know about symlinks either.
This is the output using a locally stowed version on GNU mpfr-2.4.2:

$ ldd /usr/lib/gcc/i686-pc-cygwin/4.3.4/cc1.exe
        ntdll.dll => /mnt/c/WINDOWS/system32/ntdll.dll (0x7c910000)
        kernel32.dll => /mnt/c/WINDOWS/system32/kernel32.dll (0x7c800000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x67f00000)
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        ADVAPI32.DLL => /mnt/c/WINDOWS/system32/ADVAPI32.DLL (0x77da0000)
        RPCRT4.dll => /mnt/c/WINDOWS/system32/RPCRT4.dll (0x77e50000)
        Secur32.dll => /mnt/c/WINDOWS/system32/Secur32.dll (0x77fc0000)
        cyggmp-3.dll => /usr/bin/cyggmp-3.dll (0x63f40000)
        (missing cygmpfr-1.dll here)

This one is the output if I manually delete the symlink to the
conflicting dll and place a
copy of it in /usr/local/bin, as described above:

$ ldd /usr/lib/gcc/i686-pc-cygwin/4.3.4/cc1.exe
        ntdll.dll => /mnt/c/WINDOWS/system32/ntdll.dll (0x7c910000)
        kernel32.dll => /mnt/c/WINDOWS/system32/kernel32.dll (0x7c800000)
        cyggcc_s-1.dll => /usr/bin/cyggcc_s-1.dll (0x67f00000)
        cygwin1.dll => /usr/bin/cygwin1.dll (0x61000000)
        ADVAPI32.DLL => /mnt/c/WINDOWS/system32/ADVAPI32.DLL (0x77da0000)
        RPCRT4.dll => /mnt/c/WINDOWS/system32/RPCRT4.dll (0x77e50000)
        Secur32.dll => /mnt/c/WINDOWS/system32/Secur32.dll (0x77fc0000)
        cyggmp-3.dll => /usr/bin/cyggmp-3.dll (0x63f40000)
        cygmpfr-1.dll => /usr/local/bin/cygmpfr-1.dll (0x6cd80000)

IAFNAB?

Regards.

2010/4/8, [email-masked] <[email-masked]>:
> Hello,
>
> I'm afraid any further investigation around this issue will have to wait
> until tomorrow morning (spanish time). Thanks everybody for your time,
> your answers...
> and not LARTing me (at least publicly) for QREAIMR...
> :-/ sorry for that.
>
> Best regards.
>
> --
> Huella de clave = 943C D77F 0CB0 02FE 166E  E06F D13A A2E1 98A5 C953
>

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