2010-11-24 191 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