gcc에서 STL사용
글쓴이: simpid / 작성시간: 수, 2003/05/07 - 2:40오후
Windows에서 VC를 이용해 개발해 왔습니다.
그래서 그런지 gcc를 사용하면서 어려움이 많습니다.
gcc기능을 테스트하기 위해 간단한 STL사용해서 간단한 프로그램을 작성해 봤는데...
컴파일은 문제가 없는데 링크과정에서 오류가 발생합니다.
저는 그냥 gcc -o template template.cpp 등으로 컴파일하는데..
STL을 사용하려면 뭔가 특별한 조치가 필요한가요?
저는 Redhat Linux9을 설치했고, gcc와 관련해서 설정을 조정한건 없습니다.
그냥 아나콘다에서 제안하는 기본 설정을 사용했습니다.
설치되어 있는 gcc는 3.2.2 버젼입니다.
Forums:
gcc가 아니라 g++을 써야 합니다. -_-a
gcc가 아니라 g++을 써야 합니다. -_-a
g++ 로 해보셨나요?
g++ 로 해보셨나요?
c++은 컴파일 할때 C++로 하셔야 합니다C는 GCC로 하시고요
c++은 컴파일 할때 C++로 하셔야 합니다
C는 GCC로 하시고요]
저두 저번에 어떤책에서 보고 그냥 gcc로 했다가 낭패를 당한적이 있습니다
-lstdc++이렇게 추가하셔도 됩니다.gcc 에서 기본라
-lstdc++
이렇게 추가하셔도 됩니다.
gcc 에서 기본라이브러리로 stdc++ 가 잡혀 있지 않답니다.
g++ 은 기본라이브러리로 잡혀 있죠..
단지 라이브러리만의 차이는 아닙니다.gcc는 C language co
단지 라이브러리만의 차이는 아닙니다.
gcc는 C language compiler,
g++을 C++ language compiler입니다.
[quote="eungkyu"]단지 라이브러리만의 차이는 아닙니다.g
아니죠
cc 가 C 컴파일러
g++ 이 c++ 컴파일러
이고
gcc 가 그 관문을 하는 역할이죠.
아닌가요?.~~~
[quote="vigor96"]아니죠cc 가 C 컴파일러g
아닙니다. -_-
cc라는 것은 보통의 유닉스에서 밴더들이 C Compiler를 제공하면서
그 명령 이름이 cc (C Compiler의 준말이겠죠... 당연히..) 가 된 것이고,
gcc와는 하등의 관련이 없습니다.
GCC(GNU Compiler Collection: 최근(?)에 이 이름이 생겼죠) 라는 것은
GNU에서 만들었고, 만들고 있는데, 그 중에서 C Compiler는 gcc,
C++ Compiler는 g++, Java Compiler는 gcj, 이런 식으로 나가는 것입니다.
물른 이러한 컴파일러들이 backend늘 동일하고 frontend만 다른 것일지
하더라도 같은 backend에서 C용 frontend를 단 것이 gcc이고 C++용
frontend를 단 것이 g++이지, gcc에 C++ 라이브러리를 링크시킨다고
해서 C++ Compiler가 되는 것은 아닙니다. 단지 문법이 비슷하니까 컴파일이
되기도 하는 것이겠죠.
gcc -x c++ 옵션을주면 c++로 컴파일합니다...물론 내부적으로
gcc -x c++ 옵션을주면 c++로 컴파일합니다...물론 내부적으로 g++을 부르겠지만요..
옵션없이하면 C문법으로 컴파일하니 각종에러가 뜰겁니다..
예전에 kldp에 올라온 문서에서 gcc는 확장자에 따라서 c 컴파일러나
예전에 kldp에 올라온 문서에서 gcc는 확장자에 따라서 c 컴파일러나 C++ 컴파일러를 호출해준다는 글을 읽은적이 있는데....
제가 알기론 g++ 은 c++ 컴파일러라기 보다는 c++ 언어를 c 언어
제가 알기론 g++ 은 c++ 컴파일러라기 보다는 c++ 언어를 c 언어로 바꿔주는 일종의 pre-processor(개념상 비슷하다고 생각해 이렇게 표현했을 뿐입니다.) 라고 알고있습니다.
결국 g++ 은 c++ 소스를 c 소스로 바꾸고, gcc 를 이용하여 실행파일을 만들어 내는 것으로 알고 있습니다.
초기의 C++ compiler들은 c code 를 만들어 내는 wrapp
초기의 C++ compiler들은 c code 를 만들어 내는 wrapper였지만,
현재 gcc/g++ 은 내장 compiler가 다르게 되어 있습니다.
-v option을 넣어서 .cc 와 .c 의 compiler를 확인해 보세요.
---
http://coolengineer.com
[quote="eungkyu"][quote="vigor96"]아니죠
약간의 어감 차이가 있는 것 같습니다.
제가 이해한 것은 다음과 같습니다.
즉 gcc 는 프론트 엔드 역할을 한다는 거죠
link 할때는 ld 호출하고
c 컴파일할때는 cc1 호출하고 ( cc 라고 한건 저의 착각이었습니다. )
c++ 컴파일할때는 cc1plus 호출 하고
이렇게 되는 거 아닌가요?.
혹시나 해서 g++ man 페이지를 검색해 봤습니다.
다음과 같은 말이 나오더군요.
The C and C++ compilers are integrated; g++ is a script to
call gcc with options to recognize C++. gcc processes
input files through one or more of four stages: prepro-
cessing, compilation, assembly, and linking. This man
page contains full descriptions for only C++ specific
aspects of the compiler, though it also contains summaries
of some general-purpose options. For a fuller explanation
of the compiler, see gcc(1).
g++ 은 gcc 에 c++ 에 관한 몇개 옵션을 넘겨 주는 script 에 불과하다는 것을 알 수 있습니다.
g++ => gcc => cc1plus 이런식으로 호출해서 c++ 화일이 컴파일된다고 할 수 있죠.
-lstdc++ 은 g++ 로 했을 때 자동으로 붙는 library 라 이해할 수 있고요..
틀린점이 있다면 지적해 주셨음 합니다.~~~~^_^
g++ 과 gcc 의 차이는 링크할때 C++ 라이브러리 사용여부의 차이군요
man gcc, man g++
모두 gcc 매뉴얼 페이지가 보입니다.
-v 옵션을 사용해도 동일한 옵션과 버전정보가 표시됩니다.
gcc 를 사용하건 g++ 을 사용하건 기본적으로
c 및 c++ 파일을 컴파일하는 데는 문제가 없고요.
단지 링크할때 차이가 발생합니다.
g++ 을 사용하면 앞서 다른분들이 설명하신 것처럼 c++ 관련 라이브러리가 자동으로 링크되며,
gcc 를 사용할 경우는 별도로 -lstdc++ 를 추가해줘야 합니다.
결국 gcc랑 g++ 은 c++ 파일링크시에만 차이가 있는 것입니다.
앞서 설명들중 컴파일 할 때 "-x c++" 이 필요한 경우는
gcc컴파일러에서 파일 확장자를 c++ 로 인식하지 못할 때이며,
c++, cpp, cp, cc, cxx, C 를 확장자로 갖는 파일에서는
gcc에서 자동으로 c++로 컴파일합니다.
결국 vigor96님 설명이 정확하네요.
사랑과 평화 넘치는 행복한 세상을 꿈꾸며
사랑과 평화 넘치는 행복한 세상을 꿈꾸며
제가 놓치고 있는 것도 몇개 발견할 수 있었습니다. :)중요한 것
제가 놓치고 있는 것도 몇개 발견할 수 있었습니다. :)
중요한 것은, 적어도 지금 "GCC"에서 C++ 프로그램을 컴파일할 때 C 코드를 중간결과로 내놓지 않는다는 점입니다. C compiler와 C++ compiler의 frontend는 다르다는 것이지요...
GCC manual을 보면 다음과 같은 말을 볼 수 있습니다.
댓글 달기