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