[질문] g++ 컴파일

zipsinworm의 이미지

안녕하세요. 요즘 날씨도 쌀쌀해 졌고 비도 많이 오네요.ㅎㅎ

리눅스에서 c++을 컴파일 하려고 하는데요.

컴파일 까진 괜찮은데 실행하려고 하면

error while loading shared libraries : libstdc++.so.6 : cannot open shared object file : No such file or directory

라고 에러가 발생합니다.

공유라이브러리를 로딩 하지 못했다고 하는데,

/usr/lib/libstdc++.a
/usr/lib/libstdc++.so
/usr/lib/libstdc++.la

파일이 존재하는 것을 확인 했습니다.

제가 공유라이브러리 쪽은 봐도봐도 이해가 안가네요. -_-;;
공유라이브러리를 어떻게 로드하는지 궁금합니다. 그리고 올려다고 하면 g++컴파일시 매번 올려야 하는지도 궁금합니다.

예제로 소스를 만들어 보았습니다.
---------------------
cpp.h
#ifdef __cplusplus
extern "C" {
#endif
void test(void);
#ifdef __cplusplus
}
#endif
---------------------
cpp1.cpp
#include iostream
using namespace std;

#include "cpp.h"

extern "C"
{
void test(void){
printf("Test, test");
}
}
---------------------
cpp2.c
#include "cpp.h"
#include stdio.h

int main(void)
{
test();
return 0;
}
---------------------
> g++ -Wall cpp1.cpp -o
> gcc -Wall cpp2.c -o
> gcc -Wall cpp1.o cpp2.o -o cpp -lstdc++
> ./cpp
error while loading shared libraries : libstdc++.so.6 : cannot open shared object file : No such file or directory

이렇게 나옵니다.
-lstdc++ 옵션은 넣어주지 않으니 에러가 발생하더라고요.

고수님들 가르침을 주세요.

익명 사용자의 이미지

cxx하고 c에서 만든 o 파일이 섞여 있을 때에는
g++로 링크하세요.