2009-11-09 7 views
1

G'day,64 비트 RHEL5

(64 비트 RHEL5)에서 gcc를 작성하는 데 문제가 있습니다. 32 비트 응용 프로그램을 설치해야합니다. 몇 가지 이유 때문에 gcc 4.0.3을 사용해야하므로 32 비트 대상 플랫폼에서 수천 번 시도한 것처럼 대상 시스템에 해당 버전을 먼저 설치하려고했습니다.

그러나 이번에는 문제가 발생합니다. 나는 부트 스트래핑하고 gcc 4.0.3을 경로에 설치했다./foo라고하자. 정말이 디렉토리에 필요한 라이브러리가 있습니다

 
$ echo $LD_LIBRARY_PATH 
/foo/lib:/foo/lib/gcc/x86_64-unknown-linux-gnu/lib64:/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3:/lib64 

: 언제나처럼 내가 공유 라이브러리를 포함하는 디렉토리로 가리 키도록 LD_LIBRARY_PATH를 설정

 
$ ls /foo/lib/gcc/x86_64-unknown-linux-gnu/lib64 
libgcc_s.so libgcc_s.so.1 
$ ls /foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3 
32   crtendS.o  libgcov.a  libmudflap.so.0.0.0 libmudflapth.so.0.0.0 libstdc++.so.6.0.7 
crtbegin.o include  libmudflap.a  libmudflapth.a  libstdc++.a   libsupc++.a 
crtbeginS.o install-tools libmudflap.la libmudflapth.la  libstdc++.la   libsupc++.la 
crtbeginT.o libgcc.a  libmudflap.so libmudflapth.so  libstdc++.so 
crtend.o  libgcc_eh.a libmudflap.so.0 libmudflapth.so.0 libstdc++.so.6 

그러나, 나는 간단한 프로그램을 만들려고하면, libgcc_s를 찾을 수 없습니다 :

 
$ gcc-4.0 t.cc 
/foo/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/bin/ld: cannot find -lgcc_s 
collect2: ld returned 1 exit status 

왜 libgcc_s.so 라이브러리를 찾지 못합니까?

도움을 주셨습니다.

스테판

+0

의 말씀 : GCC-4.0 -v t을 .cc? –

+0

줄 바꿈이 주석에 맞지 않으므로 추가 답변을 추가하겠습니다. – struppi

+0

마지막 줄에는 -Lfolder1 -Lfolder2가 있어야합니다. 권리? 이 폴더는 무엇입니까? –

답변

1

그것은 libgcc_s.so가 포함되지 않은 폴더/foo는/lib 디렉토리/GCC/x86_64에-알 - 리눅스 GNU/lib64에 보인다. 실험을 위해이 작업을 수행 :

GCC-4.0 -v t.cc -L/foo는/lib 디렉토리/GCC/x86_64에-알 - 리눅스 GNU/lib64에

+0

예, 그렇습니다. 저를 올바른 방향으로 향하게 해주셔서 대단히 감사합니다! 이제 ../lib64/libgcc_s.so 및 ../lib64/libgcc_s.so.1을 가리키는 x86_64-unknown-linux-gnu/4.0.3의 심볼릭 링크를 설정 했으므로 이제는 정상적으로 실행됩니다. 64 비트 환경에서 gcc 4.0.3을 빌드 할 때 문제가 될 수 있습니다. – struppi

0
 
$ gcc-4.0 -v t.cc 
Using built-in specs. 
Target: x86_64-unknown-linux-gnu 
Configured with: ../gcc-4.0.3/configure --prefix=/foo --program-suffix=-4.0 --enable-version-specific-runtime-libs --enable-languages=c,c++ --with-gnu-as --with-gnu-ld 
Thread model: posix 
gcc version 4.0.3 
/foo/i686-pc-linux-gnu/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.0.3/cc1plus -quiet -v -iprefix /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/ -D_GNU_SOURCE t.cc -quiet -dumpbase t.cc -mtune=k8 -auxbase t -version -o /tmp/ccDiWiMk.s 
ignoring nonexistent directory "/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/include" 
ignoring duplicate directory "/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++" 
ignoring duplicate directory "/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/x86_64-unknown-linux-gnu" 
ignoring duplicate directory "/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/backward" 
ignoring duplicate directory "/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include" 
ignoring nonexistent directory "/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/include" 
#include "..." search starts here: 
#include search starts here: 
/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++ 
/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/x86_64-unknown-linux-gnu 
/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include/c++/backward 
/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/include 
/usr/local/include 
/foo/include 
/usr/include 
End of search list. 
GNU C++ version 4.0.3 (x86_64-unknown-linux-gnu) 
     compiled by GNU C version 4.1.2 20080704 (Red Hat 4.1.2-46). 
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 
/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/bin/as -V -Qy -o /tmp/ccAemlDJ.o /tmp/ccDiWiMk.s 
GNU assembler version 2.19.1 (x86_64-unknown-linux-gnu) using BFD version (GNU Binutils) 2.19.1 
/foo/i686-pc-linux-gnu/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.0.3/collect2 --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 /usr/lib/../lib64/crt1.o /usr/lib/../lib64/crti.o /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/crtbegin.o -L/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3 -L/foo/i686-pc-linux-gnu/bin/../lib/gcc -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3 -L/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/lib -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/lib -L/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../lib64 -L/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../.. -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../lib64 -L/foo/lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../.. -L/lib/../lib64 -L/usr/lib/../lib64 /tmp/ccAemlDJ.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/crtend.o /usr/lib/../lib64/crtn.o 
/foo/i686-pc-linux-gnu/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.0.3/../../../../x86_64-unknown-linux-gnu/bin/ld: cannot find -lgcc_s 
collect2: ld returned 1 exit status