2014-01-29 2 views
1

불행히도 gcc-4.1을 사용해야하고 debian wheezy를 사용하고 있습니다. gcc-4.1은 저장소에 없기 때문에 소스에서 gcc를 빌드하려고합니다.gcc-4.1 컴파일

하지만 컴파일 오류를 받고 있어요 :

/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.so when searching for -lc 
/usr/bin/ld: skipping incompatible /usr/lib/x86_64-linux-gnu/libc.a when searching for -lc 
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crti.o' is incompatible with i386 output 
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/x86_64-linux-gnu/crtn.o' is incompatible with i386 output 

그것은 ld 도서관의 잘못된 버전을 따기되어 보이는,하지만 난 내 /usr/lib32/usr/lib/x86_64-linux-gnu/ 및 포함 된 해당 파일 확인 :

/usr/lib32/libc.a 
/usr/lib32/libc.so 
/usr/lib32/crtn.o 
/usr/lib32/crti.o 
/usr/lib/x86_64-linux-gnu/libc.a 
/usr/lib/x86_64-linux-gnu/libc.so 
/usr/lib/x86_64-linux-gnu/crtn.o 
/usr/lib/x86_64-linux-gnu/crti.o 

을 그리고 ld에 액세스 할 수 있어야합니다.

~$ echo $LIBRARY_PATH 
/usr/lib/x86_64-linux-gnu:/usr/lib32/ 

그래서 문제가 어디인지 전혀 알지 못합니다.

답변

1

LD_LIBRARY_PATH은 이미 링크 된 프로그램을 실행하기위한 것입니다.

./configure LDFLAGS="-L/usr/lib32" ..... 

그것은 그 생각과 같은 LDFLAGS_FOR_HOST 또는 LIBS 또는 뭔가 수 있습니다 :

당신은 아마 당신이 GCC를 구성 할 때 LDFLAGS를 설정해야합니다.

+0

감사합니다. 그러나 ./configure LDFLAGS = "- L/usr/lib32"'는 도움이되지 않았습니다. 수동으로 makefile을 고치려고했으나 실패했습니다. './configure --disable-multilib ... '을 추가하면 저에게 효과적입니다. – tom

+0

실제 문제는 아마도 여러분의 오래된 GCC가 데비안/우분투 빌드에 필요한 "multiarch"지원을 가지고 있지 않을 것입니다 (multiarch는 multilib과 혼동되어서는 안됩니다). 마지막으로 들었습니다. 심지어 최신 GCC에도 기본 기능이 없었지만 지금은 조금 전입니다. 기본적으로 데비안/우분투는 비표준 장소에 파일을 저장하고 컴파일러는 파일을 찾을 수 없습니다. – ams

4

나는이 문제를 해결할 수 있었다.

실행으로 구성 :

./configure --disable-multilib ... 

하지만 makeinfo와 함께 또 다른 문제가 발생보다 당신이 최신 버전 >=4.10이있는 경우,이 구성에 의해 발견되지 않을 수 있습니다보다. 이렇게 생성 된 메이크 파일의 간단한 수정은 나를 위해 일한 :

변경이 라인 : 여기에

MAKEINFO = /home/lecopivo/Downloads/gcc412/gcc412/gcc-4.1.2/missing makeinfo 

:

MAKEINFO = makeinfo 

내가 도움이 this 발견합니다.