[질문] g++ 컴파일
안녕하세요. 요즘 날씨도 쌀쌀해 졌고 비도 많이 오네요.ㅎㅎ
리눅스에서 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
cxx하고 c에서 만든 o 파일이 섞여 있을 때에는
g++로 링크하세요.
댓글 달기