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

가서 당신은 (USER32는 마이크로 소프트 라이브러리가 아닌 POSIX 하나입니다)는 MinGW 기능을 사용하고, 분명히 $ 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 패키지를 설치해야합니다. Here은 목록입니다. 나는 당신이 그들 모두를 필요로하는 것은 의심 스럽지만 (정확한 세트는 당신이 구축하려고하는 응용 프로그램에 달려있다).

+0

불행히도 귀하의 링크가 손상되었으며 사이트 ** cablelabs.com **에 하위 도메인 ** devzone ** (적어도 공개 액세스 용)이 없습니다. 고칠 수 있습니까? –

0

-L/lib/w32api (코드에 "windows.h"가 포함되어있는 경우 -I/usr/inclulde/w32api)를 gcc 옵션에 추가하십시오.

또한 메이크 파일에서 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