환경변수 안에 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이 '.' 보다 먼저
:
: 오도록 잡는 것입니다.
:
: 한번 재미 삼아 해보셔도 좋을 듯 합니다.
:
: 좋은 하루되세요.
:
: --
: 내 서명???