#1 Le 02/09/2008, à 10:38
- itzy
Problème link libstdc++ avec gcc4.2.3
Salut,
je développe un soft qui intègre entre autre du C.
Par le passé le soft tournait sur Solaris, puis après beaucoup de temps passé à suer pour le portage sur Mandriva. Aujourd'hui je tente de le compiler sur Ubuntu, et je rencontre un problème que je n'arrive ni à comprendre et ni à résoudre ceci explique cela...
Typiquement mon soft doit tourné sur une architecture 64bits mais il me faut le compiler en 32bits, et linker un certain nombre de librairies (32bits), dont libstdc++ qui me pose problème.
Pour faire mon link j'utilise la commande suivante :
gcc -m32 -shared /home/emi/INSTALL-DI/obj/linux_i686/C2I_GEneral.o /home/emi/INSTALL-DI/obj/linux_i686/C2I_IdfsFunctions.o \
-static -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -ltrec_idfs -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -lbase_idfs -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -lVIDF -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -lserver -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -lCfg -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -ldB -L/home/emi/INSTALL-DI/lib/linux_i686/lib_idfs/ -lant /usr/lib/libfl.a -ldl -lm -lc -lstdc++ -Wl -o /home/emi/INSTALL-DI/lib/linux_i686/lib_diva/C2I_IdfsFunctions.so
Lorsque j'exécute mon Makefile j'obtiens le message suivant :
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.a when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.so when searching for -lstdc++
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.2.3/libstdc++.a when searching for -lstdc++
/usr/bin/ld: cannot find -lstdc++
collect2: ld returned 1 exit status
make: *** [C2I_IdfsFunctions.so] Error 1
J'ai volontairement fais le choix de linker au maximum des librairies dynamiques afin que le système se débrouille de lui même, cependant, le lien va se faire par défaut sur une lib 64bits sans que je parvienne à le faire pointer vers du 32bits.
J'ai également essayé un -L/usr/lib32/ -lstdc++ rien à faire.
Si quelqu'un a une idée... Moi je désespère
Merci par avance,
Itzy.