>> Edit article
이름
제목
패스워드
환경변수 안에 path가 .:/usr/bin:/usr/X11R6/bin 이런식으로 되어 있다면, 당연 쉘은 .: 즉 현재 위치 부터 파일을 찾아들어갈것입니다. path가 저렇게 되어 있고, gcc가 ld를 찾는데, 같은 디렉안에 ld가 있으면 당연 그걸 실행하겠지요... ㅡ_-a : gcc 2.95.3을 가지고 binutils을 새로이 만들려다가 발견한 버그입니다. : : 별로 큰 버그라 볼 수는 없고, 참고 삼아 이야기 드리고자 합니다. : : : : 일단 버그가 발생되는 상황은 다음과 같습니다. : : 1) gcc 2.95.x : : 2) path에서 . 이 /usr/bin보다 먼저 선행되는 경우 : : 3) 컴파일하려는 디렉토리 안에 ld라는 화일 또는 디렉토리가 존재할 경우 : : 위의 모든 조건이 만족될 때 발생할 때 에러가 발생합니다. : : 예를 들어 다음과 같은 경우라 보죠. : : # echo $PATH : .:/usr/bin:/usr/X11R6/bin : : # ls -l : -rwxr-xr-x 3 root root 4096 11월 19 16:45 test.c : drwxr-xr-x 8 root root 4096 11월 6 21:20 ld : : # gcc -o test test.c : ./ld: installation problem, cannot exec `./ld': ?? ??? : collect2: ld returned 255 exit status : : 이 경우 반듯이 위와 같은 에러를 발생시킵니다. : : 이것은 gcc가 ld를 현재 디렉토리에서 찾으려 하기 때문에 발생하는 것입니다. : : 이러한 에러는 binutils와 같은 패키지를 컴파일할 때 볼 수 있는데 이 경우 : : 해결책은 gcc를 2.96 버전 이상을 쓰던가 path를 /usr/bin이 '.' 보다 먼저 : : 오도록 잡는 것입니다. : : 한번 재미 삼아 해보셔도 좋을 듯 합니다. : : 좋은 하루되세요. : : -- : 내 서명???
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved