[BUG] Cygwin default mounts in 1.7

marco atzeri marco.atzeri@gmail.com
Fri Sep 21 11:15:00 GMT 2012


On 9/21/2012 10:48 AM, Jiri Engelthaler wrote:
> Hello Cygwin developers
> I have a problem with cygwin default mounts
> I have compiled gcc cross compiler for powerpc (some problem with arm
> cross) and installed to destination directory. Installed directory
> structure is (truncated)
>
> +bin
> |   +powerpc-unknown-linux-gnu-gcc.exe
> +include
> +lib
> +libexec
> |   +gcc
> |      +powerpc-unknown-linux-gnu
> |          +4.4.7
> |               +cc1.exe
> +powerpc-unknown-linux-gnu
> +share
>
> When I start “powerpc-unknown-linux-gnu-gcc.exe a.c” in “bin”
> directory from windows command line, compiler fails with
> “powerpc-unknown-linux-gnu-gcc: error trying to exec 'cc1': execvp: No
> such file or directory”. Starting compiler from bash shell works fine
> and a.c is compiled.
> “powerpc-unknown-linux-gnu-gcc --print-search-dirs” says that one of
> search paths for programs is
> “/usr/bin/../libexec/gcc/powerpc-unknown-linux-gnu/4.4.7/” so all
> should work.
> But problem is with “/usr/bin” prefix. I have made tests with “ls” and
> “pwd” copied do “bin” directory and found that:
> - “pwd” is “/usr/bin”
> - “ls” shows “bin” directory content
> - “ls ..” shows “ls: cannot access ..: No such file or directory”
> - “ls /” shows “bin  cygdrive  dev  etc  include  lib  libexec
> powerpc-unknown-linux-gnu  proc  share”
>
> Core of problem is that pwd for “bin” directory is “/usr/bin”, but
> “/usr/bin/..” is not accessible.
> How to mount current directory as "/cygdrive/c/foo/bar/...../bin"
> while executing pwd or ls?
>
>    Thank you for your answer and have a nice day.
>        Jiri Engelthaler
>

Jiri,
I tried to follow up your mail and I am confused and not really
sure what is you problem.
On cygwin "/bin" and "/usr/bin" are the same directory
(see http://cygwin.com/cygwin-ug-net/using.html#mount-table)

$ mount
E:/cygwin/bin on /usr/bin type ntfs (binary,auto)
E:/cygwin/lib on /usr/lib type ntfs (binary,auto)

as /usr/bin is a mount of /bin.

Pwd works in both the two cases:
$ cd /bin
$ pwd
/bin

$ cd /usr/bin
$ pwd
/usr/bin

Most of the compilers/programs expect to find themself in /usr/bin,
and some are referring their libraries relative to such position
in this way
../libexec/gcc/powerpc-unknown-linux-gnu/4.4.7/
is correctly targeting
/usr/bin/../libexec/gcc/powerpc-unknown-linux-gnu/4.4.7/

for this reason you should have in the PATH "/usr/bin" before "/bin"
( /bin not defined at all)
to avoid that these programs looks for

/bin/../libexec/gcc/powerpc-unknown-linux-gnu/4.4.7/

that does not exist.

What is your PATH ?

On /etc/profile it is defined as:
PATH="/usr/local/bin:/usr/bin:${PATH}"

Regards
Marco










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



More information about the Cygwin mailing list