2013-01-01 3 views
1

잘못된 접두사 (--prefix=/home/.../usr)가 configure 스크립트에 전달되어 gcc와 binutils가 빌드 및 설치되었습니다.변경 gcc/binutils --prefix

는 이제 다시, 다시 구성하고 오른쪽 접두사 (--prefix=/usr)와 GCC와 바이너리 유틸리티를 다시 설치하지만 컴파일 항상 실패 :

물론
$ /bin/ld: cannot find /home/../usr/lib/libc.so.6 

내가 작업을 얻기 위해 라이브러리를 심볼릭 링크 수 있지만, 이 경로가 저장된 파일과 내가 어떻게 변경할 수 있는지 알고 싶습니다.

+2

'/ etc/ld.so.conf '는 뭐라고 말합니까? – favoretti

+3

그리고'gcc -v'로 컴파일 할 때 그게 무슨 뜻입니까? 또한,'ldconfig'를 실행하는 것을 잊지 마십시오. –

+0

'ldd/bin/ld'을 실행하는 것이 좋습니다. 아마도 잘못된 위치에서 C 라이브러리를 찾고있을 것입니다. 다시 재구성 (및 다시 설치) 할 때까지는 잘못된 장소를 계속 볼 가능성이 있습니다. 임시 반창고로'/ lib/libc.so.6'를 가리키는 '잘못된'장소에 심볼릭 링크를 만듭니다. 그러면 그 일이 계속 진행될 수있을 것입니다. 시스템 자체의 컴파일러 도구를 교체하는 것에 매우 신중해야합니다. 나는 결코 그것을 위험에 빠뜨리지 않으며, 항상 자신의 버전을 별도의 디렉토리 (예 :'/ usr/gnu' 또는'/ usr/gcc')에 설치합니다. 시스템 빌드를 덮어 쓰면 먼저 백업하십시오. –

답변

0

가 지금은 다시, 다시 구성하고 오른쪽 접두사 (--prefix =/USR), 그러나 컴파일은 항상 실패와 GCC와 바이너리 유틸리티를 다시 설치 :

$/빈/LD : 찾을 수 없습니다/홈/../usr/lib/libc.so.6

아마도 libc를 다시 작성하고 다시 설치하지 않았기 때문에 오류가 발생했을 것입니다. 나는 당신의 libc.so 그것에 /home/../usr/lib/libc.so.6을 가지고 내기

/* GNU ld script 
    Use the shared library, but some functions are only in 
    the static library, so try that secondarily. */ 
OUTPUT_FORMAT(elf64-x86-64) 
GROUP (/lib/x86_64-linux-gnu/libc.so.6 /usr/lib/x86_64-linux-gnu/libc_nonshared.a AS_NEEDED (/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2)) 

:

리눅스에

, libc.so이 유사한 링커 스크립트입니다.