Xmanager : telnet으로 접속시 make 명령어가 안들어요
글쓴이: orionkhw / 작성시간: 목, 2003/02/20 - 8:57오후
안녕하세요
윈도우에서 Xmanager를 이용하여 telnet으로 linux 5.2에 접속하였습니다. 둘 다 저의 연구실에 있는 겁니다.
root 계정으로 바꾼 후 제가 짠 프로그램을 make *** 해서 컴파일을 하는데 계속 링크된 파일안에 있는 함수가 undefined라고 나옵니다. 분명히 컴파일하면서 링크를 시켰는데도 말이죠.
그런데 희한한 것은 리눅스 컴퓨터에 직접가서 make *** 컴파일을 하면 되는 것입니다.
PATH 설정이 잘못되었나 싶어 기본적인 bin, sbin, lib등은 다 연결해 주었지만 마찬가지였습니다.
왜 이런 현상이 일어나죠?
어떻게 해야 될까요. 가르쳐 주세요. (참고로 전.... 좀 맹~이걸랑요)
Forums:
정확한 error message를 다 올려 주세요...문제가 Xm
정확한 error message를 다 올려 주세요...
문제가 Xmanager가 아닐 가능성이 클것 같습니다만....
---
http://coolengineer.com
실행창에서 telnet으로 접속해도 컴파일이 안되네요에러메세지는 아래와
실행창에서 telnet으로 접속해도 컴파일이 안되네요에러메세지는 아래와 같습니다
읽어주셔서 고맙고요 답변 기다릴게요
[root@srao4 OTF]# make otf
g++ -g -Wall -I./include -I./include_opcom -c otf.c
g++ -g -Wall -I./include -I./include_opcom -o otf otf.o ./dmc/dmc.o ./dmc/poll.o
-L./libastro -lastro -L./lib -ltelcom -lm
./libastro/libastro.a(astro.o): In function `astro::GaToEq(double, double, doubl
e *, double *, int)':
astro.o(.text+0x8c4b): undefined reference to `__eh_pc'
./libastro/libastro.a(astro.o): In function `astro::EqToGa(double, double, doubl
e *, double *, int)':
astro.o(.text+0x9057): undefined reference to `__eh_pc'
./libastro/libastro.a(astro.o): In function `astro::EqToHo(double *, double *, d
ouble *, double, double, int, double, double *, double *)':
astro.o(.text+0xc13b): undefined reference to `__eh_pc'
./libastro/libastro.a(astro.o): In function `astro::dpplr(double *, double *, do
uble *, double *, double *, double, double, double, int, int, double, double *)'
:
astro.o(.text+0xd943): undefined reference to `__eh_pc'
astro.o(.text+0xd96c): undefined reference to `__eh_pc'
./libastro/libastro.a(astro.o)(.text+0x10d27): more undefined references to `__e
h_pc' follow
collect2: ld returned 1 exit status
make: *** [otf] Error 1
리눅스!
혹시 궁금한거 하나 있는데...
루트로 바꿀때 혹시 그냥 su로 바꾼건 아닌가요?
'su -'로 해서 바꿔서 해보시길 바랍니다.
그냥 su 하면 루트로 바뀌기전 사용자의 환경변수를 그대로 가져갑니다.
Written By the Black Knight of Destruction
자기 소스가 아닌 남의 소스에서 undefined referen
자기 소스가 아닌 남의 소스에서
undefined reference to 'xxx'
이런 말이 나오면, 정말 난감해집니다. 자기 소스일때도 모르는 심볼이면 그렇지요.
이런경우에는 모든 .o, .a, .so file 들을 찾아서
nm 으로 어디에 그 symbol이 선언되어 있는지 찾아내는 수 밖에 없습니다.
nm -A *.a *.o *.so > t
하신뒤 t file을 열어서 __eh_pc 가 U 가 아닌 T, B 등으로 선언된 line을 찾으세요, 그 줄 앞에 쓰여진 library나 object가 link 되어야하는데, Makefile 상에서 빠진 것 같군요.
-A option은 여러개의 library에서 검사할 때 유용한 옵션입니다.
file이 군데군데 흩어져 있다면 find 와 조합하면 가능하겠지요.
---
http://coolengineer.com
해결했습니다(감사) :D
__eh_pc가 U로 되어 있었지만 최초 이게 포함된 library가 컴파일할 때 링크가 안되었더군요. 그런데 신기했던 건 그걸 넣어도 에러가 나던데 아예 그 라이브러리를 원격 컴퓨터에서 컴파일하고 다음에 문제 있던 녀석도 컴파일하니 에러가 안납니다.
^^ 왜 이런걸까요. 원격 root와 자기 컴에서의 root도 틀린가봐요. ^^;
여하튼 해결해 주셔서 감사합니다. (근데 진짜 왜 이런거여요....?) :?:
리눅스!
[quote]여하튼 해결해 주셔서 감사합니다. (근데 진짜 왜 이런거여요
원격접속할 때와 그냥 접속할 때의 환경변수 등의 차이겟죠.
각각의 상태에서 env 를 친 후에 비교해보세요.
library는 link 할 때, 순서를 따집니다. 필요한 것 뒤에 나타
library는 link 할 때, 순서를 따집니다. 필요한 것 뒤에 나타나야하지요.
---
http://coolengineer.com
env를 치니 다르군요... 어케 같게 합니까 그럼?
조금 몇몇 항목에서 틀리던데 어떻게 하면...되져... ^^;
리눅스!
댓글 달기