컴파일중에 crt1.o crti.o가 없다고 나옵니다

안녕하세요.
어제 11.10버전으로 갈아타고, 연구관련하여 코드들을 컴파일하다보니 에러를 해결하지 못해 선배님들께 여쭈어봅니다.

우선 코드가 F77로 컴파일해야하는 녀석이다보니 저장소에 hardy저장소를 추가하여 g77을 설치하였습니다. (제가 연구하는 분야쪽은 아직도 포트란이 대부분입니다;) 코드를 make를 하면,

/usr/bin/ld: cannot find crt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
make[1]: *** [actdline] Error 1

위와 같은 에러 메시지가 나옵니다. 위에 두 파일을 찾아봤더니 아래 경로에 있더군요.

/usr/lib/i386-linux-gnu/crt1.o
/usr/lib/i386-linux-gnu/crti.o

그래서 위의 두개를 ln -s를 이용해서 /usr/bin/ld쪽으로 링크해보려봤더니,
제가 ln명령어를 이해하지 못한것인지 /usr/bin에 ld라는 링크파일이 있어서인지 안되더군요ㅠ
구글에서는 libc-dev, libc6-dev를 설치하라는데, libc6-dev가 설치되어있습니다.

혹여나 선배님들 중에서 해결책을 알고 계신분들이 있지 않을까 도움을 요청해봅니다.

제 우분투 버전은 11.10이고,
gcc -v를 해보면

sing built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper
Target: i686-linux-gnu
Configured with: …/src/configure -v --with-pkgversion=‘Ubuntu/Linaro 4.6.1-9ubuntu3’ --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3)

로 나옵니다.

연구관련하여 서너가지 코드들이 쓰이는데, 요즘 주로 쓰는 코드만 컴파일이 안되니 폭풍 눈물이 앞을 가리네요ㅠ

아마 이 버그가 아닌가 싶습니다. [url:314fhdlf]https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/738098[/url:314fhdlf]
일단 버그픽스가 되어 있으니 저 주소로 가셔서 binutils 패키지를 받아 업데이트 후 다시 시도해 보세요.
그리고 libc6-dev가 설치되어 있다고 하셨는데 경우에 따라 libc-dev를 설치해서 해결되는 경우도 있을 수 있습니다.

[quote="yemharc":37o9yg7e]일단 버그픽스가 되어 있으니 저 주소로 가셔서 binutils 패키지를 받아 업데이트 후 다시 시도해 보세요.
그리고 libc6-dev가 설치되어 있다고 하셨는데 경우에 따라 libc-dev를 설치해서 해결되는 경우도 있을 수 있습니다.[/quote:37o9yg7e]

답변 감사합니다.
우선 시냅틱패키지관리를 설치하여 확인해보니, binutils 가 설치되어있어, 재설치를 해보았습니다.
근데 해결이 안되네요.ㅠ

libc-dev 를 설치하려보면,
Note, selecting ‘libc6-dev’ instead of ‘libc-dev’
libc6-dev is already the newest version.
이와 같은 메시지가 나옵니다.

저 버그 리포트를 보며 의아해진건 분명 같은 코드를 11.04에서는 큰 문제없이 설치되었다는게 더 저 미궁속으로 빠져들게 하네요.

현재 우분투 버전을 낮춰서 다시 설치할지, 다른 배포본으로 넘어가볼지 고민이네요.ㅠ

http://www.linuxfromscratch.org/blfs/vi … l/gcc.html

ihavnoth님 yemharc님 답변 감사합니다.

어제 하루 종일 이것저것 해보다가, 우선 버전을 갈아탔습니다.
우분투11.10에서 민트12(일종의 확인 사살이었달까요?)로 갈아타보고 똑같은 증상을 확인한 뒤,
민트 11로 내려왔습니다.

짐작이 되는 부분은 gcc 4.6.x와 gcc 4.5.x의 차이에서 나타나는 듯 싶더군요.
gcc만 다시 설치해볼까 싶었는데, 민트 11에서 문제없는걸 확인하니 다시 시간을 내어
우분투 11.10이나 민트12로 올라가 gcc를 설치하기에는 지쳐서 다음 기회에 해보려합니다.
(내심 그 사이에 고쳐져있길 바라는 마음도 크죠.)

답변에서 해주신대로,
저희 연구쪽의 포트란 코드들을 보면 이전 gcc 3.x.x 에서는 g77설치에 fortran 77이 대세였지만
최근에는 코드들이 gfortran에 맞춰서 나오고는 있습니다. 이에 맞는 코드를 받아서 해볼까 싶었지만,
사람이란게 익숙한걸 따라가게 되나보네요.;;

시간내주셔서 제 문제를 같이 고민해주셔서 감사합니다.

[url:30yr4ti7]http://askubuntu.com/questions/75116/how-do-you-build-older-gcc-versions-errors-about-crti-o-not-being-found[/url:30yr4ti7]

위 링크에 보면

cd /usr/lib
ln -s x86_64-linux-gnu/crt*.o .

해주라고 나오는데 그거 해주고.

/usr/lib/gcc/x86_64-linux-gnu/3.4.6
디렉토리에 링크 깨진거
/usr/lib/gcc/x86_64-linux-gnu/4.6
디렉토리에 제대로 된 링크로 수정해주니 잘 작동하네요.