2009-11-09 6 views
1

G'day,Problème de construction gcc sur 64bit RHEL5

Sur une boîte RHEL5 de 64bits, nous devons installer notre application 32 bits. Pour certaines raisons, nous devons utiliser gcc 4.0.3 pour cela, donc j'ai essayé d'installer cette version sur la machine cible en premier, comme je l'ai fait un millier de fois sur des plates-formes cibles 32 bits.

Cette fois, cependant, j'ai des problèmes. J'ai amorcé et installé gcc 4.0.3 dans un chemin, disons/foo. Comme toujours, je mis le LD_LIBRARY_PATH à pointer dans le répertoire contenant les bibliothèques partagées:

 
$ 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 

Il y a vraiment les bibliothèques nécessaires dans ces répertoires:

 
$ 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 

Cependant, si je tente de créer un programme simple, ld ne peut pas trouver 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 

Pourquoi ne pas trouver la bibliothèque libgcc_s.so?

Toute aide appréciée!

Stefan

+0

Que dit: gcc-t -v 4.0 .cc? –

+0

Des tas de lignes qui ne tiennent pas dans un commentaire, donc j'ajouterai une réponse de suivi: – struppi

+0

Les dernières lignes doivent avoir -Lfolder1 -Lfolder2. Droite? Quels sont ces dossiers? –

Répondre

1

Il semble que votre dossier/foo/lib/gcc/x86_64-unknown-linux-gnu/lib64 où libgcc_s.so ne sont pas inclus. Par souci de faire l'expérience:

gcc 4.0 -v t.cc -L/foo/lib/gcc/x86_64-unknown-linux-gnu/lib64

+0

Oui, cela a fonctionné. Merci beaucoup de me pointer dans la bonne direction! Je mets maintenant des liens symboliques dans ... x86_64-unknown-linux-gnu/4.0.3 pour pointer vers ../lib64/libgcc_s.so et ../lib64/libgcc_s.so.1 et maintenant ça marche bien. Peut-être un problème dans la construction de gcc 4.0.3 dans les environnements 64 bits. – 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