2013-07-10 69 views
1

cygwin中的gcc編譯器無法正確執行(放棄?)任何文件夾,但是/ bin。例如,試圖編譯我的代碼/ bin中的作品,但是從/斌/ myprogram使用詳細選項,我從編譯器收到以下消息:cygwin中的gcc編譯器無法正確執行(放棄?)

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。輸出如下。

從/斌:

$ 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 

從/斌/ 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

您有各種選擇。問題是錯誤的/usr/local/bin/cygz.dll

要麼刪除流氓/usr/local/bin/cygz.dll(首選), 或修復您PATH

$ export PATH=/usr/bin:/usr/local/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS 

說明:$PATH

Windows上的庫搜索路徑具有.。所以當你在/bin時會發現右邊的cygz.dll。否則,首先會找到你路徑上的碎片。

+0

謝謝!/usr/local/bin中有一些孤兒(?)dll:cygmhash-2.dll,cygmcrypt-4.dll,cygz.dll,cygwin1.dll。當這些被刪除的程序編譯在/ bin/myprogram /沒有投訴。 –