2011-02-18 3 views
17

난 그냥는 MinGW 설치으로서 사용하는 bin 폴더에 내 프로그램 컴파일 (7 개) .exe 파일 볼 수 있습니다..는 C++ 컴파일러

  1. C++ EXE
  2. g ++ EXE
  3. mingw32-C++. EXE
  4. mingw32-g ++. EXE
  5. gcc.exe
  6. mingw32-gcc.exe
  7. mingw32-GCC-4.4.1. exe

작은 프로그램 (testprog.cpp)은 각각 올바르게 컴파일됩니다. a.exe 파일이 bin 폴더에 생성되고 올바르게 실행됩니다.

어떤 차이점이 있으며 어떤 것을 사용해야합니까? 또한 성공적으로 컴파일 할 때마다 a.exe에서 testprog.exe로 출력 파일의 이름을 자동으로 변경하려면 어떻게해야합니까?

+3

어느 것이 가장 빠른 실행 파일을 생성합니까? –

답변

8

모두 같을 수도 있습니다. 정확한 사본 또는 서로에 대한 기호 링크. 각각에 대해 --version 플래그를 사용하여 현재 가지고있는 것을 확인해보십시오. 여기 내 MingGW 설치에, 그 바이너리 다릅니다 각각은 (diff로 확인)하지만 (파일 이름 첫 번째 비트의 예외에) 모든 출력 동일한 버전 정보 :

gcc.exe (GCC) 3.4.5 (mingw-vista special r3) 
Copyright (C) 2004 Free Software Foundation, Inc. 
This is free software; see the source for copying conditions. There is NO 
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

사용 -o가 출력 파일 이름을 변경하는 플래그 :

gcc -o testprog.exe testprog.cpp 
+0

당신 말이 맞아요. 첫 번째 4 개 파일은 마지막 3 개 파일과 동일합니다. 차이점은 무엇입니까? 그리고 -o 팁 주셔서 감사합니다. – Abbas

+2

@Abbas - 처음 4 개는 C++ 컴파일러이고 나머지 3 개는 C 컴파일러입니다. @Crazy Eddie가 그의 대답에서 언급했듯이 그들은 서로 다른 연결 동작을 할 가능성이 높습니다. 그들의 이름에 "++"가있는 것들은 아마도 단순한 .c 확장자를 가지고 있더라도 C++로 파일을 컴파일하는 것을 기본으로한다. –

3

유닉스에서는 주로 심볼 링크를 사용합니다. 유일한 차이점은 'cc'대 '++'사이입니다. 표준 C++ 라이브러리의 일부를 사용하는 경우이 둘의 차이점을 알아야합니다. '++'버전은 그 lib에 자동으로 링크됩니다. 'cc'은 C 컴파일러이므로 그렇게하지 마십시오. -lstdC++ 등을 추가하여 C++ 컴파일러로 사용할 수 있지만 그렇게하지 마십시오.

14

다음은 gcc 명명 규칙을 따릅니다.

  • C++. exe는 시스템 C에 대한 전통적인 이름 ++ 컴파일러
  • 그램 ++. exe를하고 "현재의 시스템"에 대한 컴파일 GCC 컴파일러
  • mingw32- * 버전의 이름은 gcc.exe 있습니다 "mingw"타겟과 크로스 컴파일하는 컴파일러의 이름입니다. 이 경우 시스템 목표와 동일합니다.
  • 다음 mingw32-GCC-4.1.exe이 "와 Mingw 대상 버전 4.1에 대한 GCC"입니다

당신은 일반적으로 "GCC"변종으로 C 코드를 컴파일해야하고, "g ++"변종 C++ 코드입니다. 내가 본 것을 나는 C++ 컴파일 과정에과에서 실행 일부 DLL을 만드는 지침은 웹 주위를 검색하는 동안 출력 파일 이름을 지정하기 위해

사용 -o filename은 기본,

0

a.exe를하다 그들은 g ++를 사용하여 gcc를 사용하는 것과 같은 방법으로 C++를 컴파일했습니다.