2009-11-09 1 views
1

G'day,Неисправность gcc на 64-битной RHEL5

на 64-битной коробке RHEL5 нам необходимо установить наше 32-битное приложение. По некоторым причинам нам нужно использовать gcc 4.0.3 для этого, поэтому я сначала попытался установить эту версию на целевой машине, например, я сделал тысячу раз на 32-битных целевых платформах.

На этот раз, однако, у меня проблемы. Я загрузил и установил gcc 4.0.3 в путь, скажем/foo. Как всегда я установить LD_LIBRARY_PATH, чтобы указать на каталог, содержащий разделяемые библиотеки:

 
$ 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 

Там действительно необходимые библиотеки в этих каталогах:

 
$ 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 

Однако, если я пытаюсь создать простую программу, ld не может найти 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 т .cc? –

+0

Кучи строк, которые не вписываются в комментарий, поэтому я добавлю следующий ответ: – struppi

+0

Последние строки должны иметь -Lfolder1 -Lfolder2. Правильно? Что это за папки? –

ответ

1

кажется ваш папка/Foo/Библиотека/GCC/x86_64-неизвестно-линукс-ГНУ/lib64 где libgcc_s.so не входит. Ради эксперимента это сделать:

GCC-4.0 -v t.cc -L/Foo/Библиотека/GCC/x86_64-неизвестно Линуксом-гну/lib64

+0

Да, это сработало. Большое спасибо за то, что указали мне в правильном направлении! Теперь я устанавливаю символические ссылки в ... x86_64-unknown-linux-gnu/4.0.3, чтобы указать на ../lib64/libgcc_s.so и ../lib64/libgcc_s.so.1, и теперь он работает нормально. Может возникнуть проблема при построении gcc 4.0.3 в 64-разрядных средах. – 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 
Смежные вопросы