이 오류는 무엇이고 어떻게 해결해야 합니까?
글쓴이: Seven.. / 작성시간: 토, 2004/03/27 - 3:03오후
숙제를 위해 학교에서 제공해주는 cpp파일을 받았습니다.
그리고 gcc를 이용해서 이렇게...
gcc -o server server.cpp /tmp/cc25Ea6J.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status
허걱.. 이런! 무슨말인지 모르겠더군요 ㅠ.,ㅜ
여기저기 찾아봤는데도 모르겠어서 이렇게 질문 드립니다.
아래는 받은 파일입니다.
/* The server process */ #define _GNU_SOURCE #include "local.h" int main() { int n, done, dummyfifo, publicfifo, privatefifo; struct message msg; FILE *fin; static char buffer[PIPE_BUF]; mknod(PUBLIC, S_IFIFO | 0666, 0); if((publicfifo = open(PUBLIC, O_RDONLY)) == -1 || (dummyfifo = open(PUBLIC, O_WRONLY | O_NDELAY)) == -1) { perror(PUBLIC); return 1; } while(read(publicfifo, (char *)&msg, sizeof(msg)) > 0) { n = done = 0; do { if((privatefifo = open(msg.fifo_name, O_WRONLY | O_NDELAY)) == -1) sleep(3); else { fin = popen(msg.cmd_line, "r"); write(privatefifo, "\n", 1); while((n = read(fileno(fin), buffer, PIPE_BUF)) > 0) { write(privatefifo, buffer, n); memset(buffer, 0x0, PIPE_BUF); } pclose(fin); close(privatefifo); done = 1; } } while(++n < 5 && !done); if(!done) { write(fileno(stderr), "\nNOTE: SERVER ** ENTER ** accessed private FIFO\n", 48); return 2; } } return 0; }
Forums:
컴파일은 잘 됐는데, 실행 파일을 만들 때 필요한 라이브러리가 없다는 소
컴파일은 잘 됐는데, 실행 파일을 만들 때 필요한 라이브러리가 없다는 소리입니다.
gcc에 '-l라이브러리이름' 옵션을 주세요.
ㄲ ㅏ ㅂ ㅣ / M c K a b i / 7 7 r b i / T o D y
일단 local.h 도 올려주서야...
컴파일을 해볼려구 했더니 헤더파일이 없군요.
CPP 용 라이브러리들이 설치가 안된듯 합니다.
gcc 는 C++ 컴파일러지만 설치시 옵션에 따라 해당라이브러리가
설치되지 않았거나 접근 불가능인 상태이거나 그럴것 입니다.
- 겨울아찌 -
- 겨울아찌 -
winchild@gmail.com
cpp파일을 컴파일하신다면, g++을 쓰셔야 합니다.gcc말고 g
cpp파일을 컴파일하신다면, g++을 쓰셔야 합니다.
gcc말고 g++을 써보세요.
[quote="검은해"]cpp파일을 컴파일하신다면, g++을 쓰셔야 합니
gcc가 g++을 부릅니다. 이 문제하곤 관련이 없지요.
ㄲ ㅏ ㅂ ㅣ / M c K a b i / 7 7 r b i / T o D y
[quote="까비"]gcc가 g++을 부릅니다. 이 문제하곤 관련이 없
최근 버전에서만 그런지는 모르겠지만, gcc로는 C++ 파일은 제대로 링크가 되지 않더군요. g++로 하면 잘 되고요. 오류 증상도 비슷합니다. gcc쪽 스펙에 변경이 있는걸지도 모르겠군요.
g++로 시도해보세요. :)
g++은 설치가 안되요..
g++은 설치가 안되요... ㄱ
여러번 해볼려고 했는데;; 잘 안되더군요
libstdc5.0-3.3.3이 필요하다고 하는데
그게 안찾아지기도 하고
이하 헤더 파일입니다. 꼭좀 도와주세요 ㅠ.,ㅜ
이것때문에 일주일동안 미쳐가고 있는중 :roll:
제가 리눅스가 쌩초보라.. ㅠ.,ㅜ
라이브러리를 추가한다거나 해야한다면
어디서 받아서 어디에 깔아줘야 할까요?
VENI VIDI VICI
처음 인용해주셨던 코드는 C++이므로 g++이 설치가 안되어 있으면 어차
처음 인용해주셨던 코드는 C++이므로 g++이 설치가 안되어 있으면 어차피 사용을 못하실 겁니다.
g++이 설치 안되어있다면, 어떻게든 설치하시는 일이 급선무이겠습니다. g++ 설치시도를 하실 때 정확히 어떻게 하셨는지, 어떤 에러가 뜨는지를 설치 및 활용 QnA에 올려보세요.. ^_^;
g++ 로 링크하시거나 libstdc++ 을 링크하세요.
g++ -o server server.cpp
또는
gcc -o server server.cpp -lstdc++
양쪽 다 안 된다면, 별 도리가 없습니다. g++ 새로 설치하시는 수밖에요. (하지만 컴파일 에러가 아니라 링크 에러가 나는 걸 봐서는 아마 될 거라고 생각합니다)
조금만 고치면 gcc로 돌아가지 않을까요...?별로 C++같지는
조금만 고치면 gcc로 돌아가지 않을까요...?
별로 C++같지는 않아보이는데... ^^;
얼라?
두가지 문제 중 하나라고 봅니다....
첫째로... 혹시 헤더파일은 다른 폴더에 저장하신건 아닌지?
제가 보기엔 간단한 문제 같은데요? gcc로도 컴파일이 될 것 같은데...
만약 현재 폴더(cpp가 있는 폴더)가 cur이고 헤더파일이 있는 폴더가 hdr이면...
현재 폴더에서 다음과 같이 입력해야 합니다.
# gcc -o server server.cpp -Ihdr
-I 뒤에 폴더명을 써줘야 합니다.
두번째... 라이브러리 위치 지정 문제입니다.
위에 분들이 써주신대로 -l 옵션은 /lib, /usr/lib, /usr/local/lib과 같은 정해진 장소에서만 라이브러리를 찾게 되어 있습니다.
그래서 만약 현재 디렉토리에 라이브러리를 두셨다면 -L옵션을 쓰셔야 합니다.
# gcc -o server server.cpp -lstdc -L.
위에 붙여준 -L 다음에 .이 현재 디렉토리 입니다.
먼저분이 말씀하신대로 컴파일 에러가 아닌 링크 에러이기 때문에 다시 깔 필요는 없다고 봅니다.
void main(void)
{
char *brain;
brain = malloc(sizeof(stress));
free(brain);
}
뭐든지 답은 간단한데서 시작한다.
g++을 설치하지 않았다면 libg++도 설치가 안 되어 있을텐데요? -
g++을 설치하지 않았다면 libg++도 설치가 안 되어 있을텐데요? -_-;;
댓글 달기