1

cygwin の gcc コンパイラは、/bin 以外のフォルダからは正しく実行されません (諦めますか?)。たとえば、/bin からコードをコンパイルしようとすると動作しますが、詳細オプションを使用して /bin/myprogram からコンパイルすると、コンパイラから次のメッセージが表示されます。

gcc version 4.5.3 (GCC)
COLLECT_GCC_OPTIONS='-O' '-ansi' '-v' '-c' '-mtune=generic' '-march=i686'
 /usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe -quiet -v -D__CYGWIN32__ -D__CYGWIN__ -D__unix__ -D__unix -idirafter /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api -idirafter /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/lib/../../include/w32api sb.c -quiet -dumpbase sb.c -mtune=generic -march=i686 -ansi -auxbase sb -O -ansi -version -o /tmp/ccyhmnJp.s
Makefile:101: recipe for target `sb.o' failed
make: *** [sb.o] Error 1

他の人も同様の問題を報告しています:

http://cygwin.com/ml/cygwin/2010-01/msg00939.html

解決策はパスを変更することのようですが、「パスから X を削除する」は一時的な (そして奇妙な) 回避策のように聞こえますが、永続的な解決策ではなく、何を削除すればよいかわかりません。とにかく、/bin と /bin/myprogram (コンパイルしたい場所) から cygcheck を実行しました。出力は次のとおりです。

/bin から:

$ cygcheck /usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe
C:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\cc1.exe
  C:\cygwin\bin\cygcloog-0.dll
    C:\cygwin\bin\cygwin1.dll
      C:\WINDOWS\system32\KERNEL32.dll
        C:\WINDOWS\system32\ntdll.dll
    C:\cygwin\bin\cyggmp-10.dll
    C:\cygwin\bin\cygppl_c-4.dll
      C:\cygwin\bin\cygppl-9.dll
        C:\cygwin\bin\cyggcc_s-1.dll
        C:\cygwin\bin\cygstdc++-6.dll
        C:\cygwin\bin\cyggmpxx-4.dll
      C:\cygwin\bin\cygpwl-5.dll
  C:\cygwin\bin\cyggmp-3.dll
  C:\cygwin\bin\cygiconv-2.dll
  C:\cygwin\bin\cygintl-8.dll
  C:\cygwin\bin\cygmpc-1.dll
    C:\cygwin\bin\cygmpfr-1.dll
  C:\cygwin\bin\cygmpfr-4.dll
  C:\cygwin\bin\cygppl_c-2.dll
    C:\cygwin\bin\cygppl-7.dll
  C:\cygwin\bin\cygz.dll

/bin/myprogram から:

$ cygcheck /usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe
C:\cygwin\lib\gcc\i686-pc-cygwin\4.5.3\cc1.exe
  C:\cygwin\bin\cygcloog-0.dll
    C:\cygwin\usr\local\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-10.dll
    C:\cygwin\bin\cygppl_c-4.dll
      C:\cygwin\bin\cygppl-9.dll
        C:\cygwin\bin\cyggcc_s-1.dll
        C:\cygwin\bin\cygstdc++-6.dll
        C:\cygwin\bin\cyggmpxx-4.dll
      C:\cygwin\bin\cygpwl-5.dll
  C:\cygwin\bin\cyggmp-3.dll
  C:\cygwin\bin\cygiconv-2.dll
  C:\cygwin\bin\cygintl-8.dll
  C:\cygwin\bin\cygmpc-1.dll
    C:\cygwin\bin\cygmpfr-1.dll
  C:\cygwin\bin\cygmpfr-4.dll
  C:\cygwin\bin\cygppl_c-2.dll
    C:\cygwin\bin\cygppl-7.dll
  C:\cygwin\usr\local\bin\cygz.dll

いくつかの明確な違いがありますが、これらが何を意味するのかはわかりません。

私のシステム上のパスは次を返します:

$ $PATH
-bash: /usr/local/bin:/usr/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:                                                         /cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/ProgramFiles/ImageMagick-6.8.6-Q16                                                         :/cygdrive/c/Ruby193/bin:/cygdrive/c/Program: No such file or directory

質問は、私は今何をしますか?答えがパス変数の変更である場合、何を削除する必要がありますか? パス変数は bash リソース ファイルの 1 つに保存されていますか、それともコマンド ラインから変更する必要がありますか? どうもありがとう!

4

1 に答える 1