2010-11-24 222 views
2

在cygwin下使用gcc的最小包是什麼? 我已經安裝了gcc-core,gcc-g ++,gdb,binutils,make。這些不夠嗎?當我嘗試編譯一個基本的C代碼,我得到以下錯誤gcc cygwin編譯錯誤

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find 
-luser32 
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find 
-lkernel32 
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find 
-ladvapi32 
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: cannot find 
-lshell32 

有名爲SYSTEM32 USER32 ADVAPI SHELL32 dll文件。鏈接器是否搜索它們但沒有找到? 它是一個路徑相關的問題?當我去$ PATH

$ $PATH 
bash: /usr/local/bin:/usr/bin:/bin:/cygdrive/c/Program: No such file or directory 

和echo $ PATH

$ echo $PATH 
/usr/local/bin:/usr/bin:/bin:/cygdrive/c/Program Files/PC Connectivity Solution/ 
:/cygdrive/c/Program Files/MiKTeX 2.8/miktex/bin:/cygdrive/c/WINDOWS/system32:/c 
ygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem:/cygdrive/c/Program Files/AT 
I Technologies/ATI.ACE/Core-Static:/cygdrive/c/Program Files/MATLAB/R2010a/runti 
me/win32:/cygdrive/c/Program Files/MATLAB/R2010a/bin:/cygdrive/c/Program Files/S 
amsung/Samsung PC Studio 3/:/cygdrive/c/Cygwin/bin:/cygdrive/c/Cygwin/usr/bin 

回答

4

顯然,你使用的MingW功能(USER32是微軟庫,而不是一個POSIX一個)。所以你應該安裝MingW軟件包。 Here是一個列表;我懷疑你需要所有這些,但(確切的集合將取決於你正在嘗試構建的應用程序)。

+0

不幸的是,您的鏈接已損壞,網站** cablelabs.com **沒有子域** devzone **(至少對於公衆而言)。你能修好它嗎? – 2017-05-30 13:45:17

0

嘗試在gcc選項中添加-L/lib/w32api(也可能是-I/usr/inclulde/w32api,如果代碼中包含「windows.h」)。

您還可以在makefile中查找LDFLAGS,並將其添加到「-L/lib/w32api」(不含引號)中。如果您需要上述的包含路徑,則可以對CFLAGS變量執行相同的操作。

0

在文件夾中可能沒有w32api

轉至:C:\cygwin\usr\lib\w32api並將所有文件複製到C:\cygwin\usr\libC:\cygwin\lib這應該修復-luser32錯誤。

+1

你不應該那樣做。出於某種原因,它們被放在不同的目錄中。使用編譯和鏈接時間參數和選項來使其正確。如果你使用mingw特性構建,你應該使用-mno-cygwin(pre-gcc4)或者一個mingw交叉編譯器(可以在cygwin安裝程序'setup.exe'中找到)。 – thoni56 2012-08-24 16:50:07