인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

t62mqvhwm7님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C언어

VSCode에서 gcc 컴파일 오류

작성

·

80

1

[도움 요청] VSCode에서 gcc 컴파일 오류 (WinMain 관련 에러, MinGW 재설치 여러 번 시도했어요)

 

현재 Windows에서 Visual Studio Code로 C 언어를 공부하고 있는 학생입니다.

gcc 명령어로 간단한 main.c 파일을 컴파일하려고 하면, 계속 WinMain 관련 링크 에러가 뜹니다.

구체적인 에러는 다음과 같습니다:

undefined reference to `WinMain'

collect2.exe: error: ld returned 1 exit status

제가 시도한 내용은 아래와 같습니다:

  1. TDM-GCC / MinGW-w64 / WinLibs 버전 모두 시도

    • zip 파일로 직접 설치하고 환경변수에도 C:\mingw64\bin 추가 완료

    • gcc --version 확인 시 정상 출력됨 (예: gcc 14.2.0)

  2. Visual Studio Code 새로 설치 (System Installer)

    • PATH 등록 옵션 포함해서 설치 완료

    • where gcc 입력해도 경로가 출력되지 않다가, 나중엔 C:\mingw64\bin\gcc.exe가 나오기도 함

    •  

  3. VSCode 터미널에서 gcc main.c 입력 시 오류 발생

    • main() 함수만 있는 단순한 코드인데도 WinMain 오류 발생

    • -mconsole, -Wl,-subsystem,console 옵션도 테스트했지만 동일한 에러 발생

     

  4. MSYS2, SourceForge 설치기, WinLibs zip 버전 등 다양한 gcc toolchain 시도

    • 환경 변수 초기화 및 재등록도 수차례 했습니다

     

    제가 궁금한 것

 

 

  • 혹시 Windows GUI 용 링커 옵션이 기본 적용돼서 WinMain을 찾는 걸까요?

  • gcc main.c -o main.exe -mconsole로 해결되야 정상 아닌가요?

  • 정상적으로 gcc CLI 환경에서 main() 함수로 컴파일이 되는 MinGW 버전이나
    설치 방법 추천해주실 수 있나요?

  • 제가 지금 어떤 부분을 놓치고 있는 걸까요…?

 

 

 

 

정말 너무 여러 번 시도했는데도 안 되어서

혹시 전공자 분들이나 gcc 환경 잘 아시는 분들 도움 받을 수 있을까 해서 글 올립니다.

캡처도 필요하면 추가로 올릴 수 있어요!

 

답변 2

0

durams님의 프로필 이미지

안녕하세요, 질문&답변 도우미 durams입니다.

WinMain() 관련 에러는 제가 gcc를 사용해오면서 보지못한 에러이지만, 제 생각에는 winlibs를 설치하시면서 기존 gcc 설정이 덮어씌워진 것이 원인으로 보입니다 (gcc 명령어가 winlibs 설정으로 동작하고 있을 가능성)

그리고 vscode에서 사용하셨다는 터미널이 무엇인지도 불분명합니다.


저는 범용적으로 많이 쓰이는 msys2를 처음부터 설치하시는 것을 추천드립니다. 이미 여러번의 재설치로 번거로우시겠지만, 기존에 설치하셨던 툴체인과 관련 환경 변수를 모두 삭제하시고 진행해주세요. 아래 링크에 자세한 설명이 있으니 참고하시면 크게 어려움은 없으실 것이라 생각합니다. (ucrt64를 사용합니다)

https://code.visualstudio.com/docs/cpp/config-mingw

  • 설치하신 툴체인에서 제공하는 터미널에서 gcc로 컴파일을 시도해보세요.

  • 터미널에서 echo $PATH를 입력해서 해당 환경에서 환경 변수가 제대로 설정되어있는지도 확인해보세요.


이전 질문글에서도 말씀드렸듯이, 이러한 설정에 익숙하지 않으시다면 visual studio를 사용하시는 것도 방법이며, wsl을 설치해서 리눅스 환경에서 native gcc를 사용하시는 것도 좋습니다.

여전히 해결이 되지 않으신다면, 이어서 질문을 주시거나 홍랩 디스코드 커뮤니티강의무관질문답변 쪽에 질문을 주시면 도와드릴 수 있습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. t62mqvhwm7님.

Visual Studio Code를 사용하면서 gcc를 통한 컴파일 시 “undefined reference to WinMain” 오류는 종종 발생할 수 있는 문제입니다. 이때 주로 발생하는 원인은 컴파일러가 GUI 애플리케이션으로 간주하고 잘못된 서브시스템을 선택하는 경우가 많습니다. 다음은 이러한 문제를 해결하기 위한 방법입니다.

  1. 콘솔 서브시스템 설정 확인: gcc가 기본적으로 GUI 애플리케이션용 설정을 따른다면 -mconsole 옵션을 사용해야 합니다. 이는 콘솔 응용 프로그램으로 인식하도록 설정합니다.
   gcc main.c -o main.exe -mconsole
  1. 환경 변수 확인: PATH 환경 변수에 MinGW의 bin 디렉터리가 제대로 추가되어 있는지 확인해 주세요. 또한, where gcc 명령어로 정확한 gcc 경로가 출력되는지도 재확인하셔야 합니다.

  2. MinGW와 MSYS2 버전 확인: 종종 특정 버전의 MinGW, 특히 GUI 버전 관련 문제를 해결하기 위해 MinGW-w64와 같은 다른 배포판을 설치하는 것이 도움이 될 수 있습니다. 해당 툴체인이 최신 버전인지 확인해보세요.

  3. 링크 오류 관련 추가 옵션 사용: 특정 상황에서는 -Wl,-subsystem,console 옵션을 사용해 링크러가 콘솔 서브시스템을 적절하게 인식하도록 할 수 있습니다.

   gcc main.c -o main.exe -Wl,-subsystem,console
  1. 기존 설정 초기화 및 재설정: 여러 가지 설정을 시도한 후에는 환경 설정을 초기화하여 처음부터 설정을 다시 시도해보는 것도 해결책이 될 수 있습니다.

아래 링크에서는 해당 문제와 비슷한 해결 방법을 다룬 질문을 확인할 수 있습니다. 함께 참고하여 문제를 해결할 수 있기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.