리눅스 서버에 대해서

리눅스에서 cpp파일로 컴파일할 때 주의점.

중년 플머 김씨 2008. 5. 27. 20:42

main.cpp
#include "a.h"
int main(void)
{
     a_func();
}

a.cpp
#include <stdio.h>
void a_func(void)
{
    printf("hello world\n");
}

a.h
extern void a_func(void);

///--> 주의 extern "C"를 사용하지 않는다. main.cpp , a.cpp 모두 같은 cpp 파일이다.

----------------------
gcc -c -o test.out a.cpp main.cpp 를 하면 다음과 같은 에러가 발생한다.

/tmp/ccSBYZq4.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

gcc는 c,와 c++에 대해서 유연하게 대응하지 못한다, 특히 C++에 대해서
따라서, 명시적으로 g++을 이용하거나 libstdc++을 추가하는 방법으로 해야한다.

g++ -c -o test.out a.cpp main.cpp
gcc -c -o test.out a.cpp main.cpp -lstdc++

<주의 .. -Lstdc++ 안됨. L의 소문자  이어야 한다.>