Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/02/2008, à 14:51

vieurou

Probleme de compil d'une librairie .so

Bonjour ,
je travail sur une librairie depuis quelque mois, j'était sur une ubuntu 32 bit jusqu'il y a quelque jour o๠je suis passé sur une 64.
Depuis ce passage en 64 bit , je n'arrive plus à  compiler cette lib, pourtant c'est exactement le même code...
j'ai voulu la compilé en 64bits avec l'option -m64 mais gcc m'as retourné une erreur


Donc quand je compille en 32bit, eclipse me fait:

Building target: libLib.so
Invoking: GCC C++ Linker
g++ -m32 -shared -o"libLib.so" ./Source/Lib.o -lGLEW -lglut
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libGLEW.so when searching for -lGLEW
/usr/bin/ld: skipping incompatible /usr/bin/../lib/libGLEW.a when searching for -lGLEW
/usr/bin/ld: skipping incompatible /usr/lib/libGLEW.so when searching for -lGLEW
/usr/bin/ld: skipping incompatible /usr/lib/libGLEW.a when searching for -lGLEW
/usr/bin/ld: cannot find -lGLEW
collect2: ld a retourné 1 code d'état d'exécution
make: *** [libLib.so] Erreur 1
make: La cible « all » n'a pas pu être refabriquée à  cause d'erreurs.
Build complete for project Lib

quand je compille en 64bit , j'ai :

**** Build of configuration Debug for project Lib ****

make -k all
Building target: libLib.so
Invoking: GCC C++ Linker
g++ -m64 -shared -o"libLib.so" ./Source/Lib.o -lGLEW -lglut
/usr/bin/ld: ./Source/Lib.o: relocation R_X86_64_32S against `x1a0' can not be used when making a shared object; recompile with -fPIC
./Source/Lib.o: could not read symbols: Bad value
collect2: ld a retourné 1 code d'état d'exécution
make: *** [libLib.so] Erreur 1
make: La cible « all » n'a pas pu être refabriquée à  cause d'erreurs.
Build complete for project Lib

donc je rajoute l'option -fPIC :

 **** Build of configuration Debug for project Lib ****

make -k all
Building target: libLib.so
Invoking: GCC C++ Linker
g++ -m64 -fPIC -shared -o"libLib.so" ./Source/Lib.o -lGLEW -lglut
/usr/bin/ld: ./Source/Lib.o: relocation R_X86_64_32S against `x1a0' can not be used when making a shared object; recompile with -fPIC
./Source/Lib.o: could not read symbols: Bad value
collect2: ld a retourné 1 code d'état d'exécution
make: *** [libLib.so] Erreur 1
make: La cible « all » n'a pas pu être refabriquée à  cause d'erreurs.
Build complete for project Lib

peut être ça peut aidé , les includes de mon code :

#include <stdio.h>
#include <libio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


#include <time.h>
#include <sys/timeb.h>

#include <GL/glew.h>
#include <GL/glut.h>
#include <GL/glx.h>

#ifdef ACML
#include </opt/acml4.0.1/gfortran64_mp_int64/include/acml.h>
//#include </opt/acml3.6.1/gfortran64_mp/include/acml.h> //3.6 en 64 multiproc
#endif



#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

je ne défini pas ACML

j'ai apparemment réussie a compiler cette bibliothèque avec libtool en suivant ce document ftp://ftp.laas.fr/pub/ii/matthieu/make-trans.pdf

donc je fais un

 libtool --mode=compile cc -c Lib.cpp && libtool --mode=link cc -rpath /usr/local/lib/ -o libLib.la Lib.lo &&sudo libtool --mode=install install -c libLib.la /usr/local/lib/ && sudo libtool --finish /usr/local/lib/ && sudo ldconfig

ce qui m'étonne c'est que je link pas (explicitement ) les librairies glut et glew... c'est normal ?? c'est libtool qui fais tout?, ou alors je m'y suis mal pris?

Hors ligne

#2 Le 12/02/2008, à 16:02

trucutu

Re : Probleme de compil d'une librairie .so

Pour moi, si, tu linkes avec glut et glew puisque tu fais -lglut et -lGLEW.

Cette dernière est-elle compilée pour 64bits ?


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#3 Le 12/02/2008, à 22:32

vieurou

Re : Probleme de compil d'une librairie .so

ben non , si tu lis la dernière ligne de code , je n'ai pas  de lglew ou lglut et c'est uniquement cette ligne qui m'as permis de compiler, les autres commandes n'avait rien donné

Hors ligne

#4 Le 13/02/2008, à 01:49

trucutu

Re : Probleme de compil d'une librairie .so

Finalement, ton problème est résolu ?

C'est space, cette utilisation de libtool. Tu perds le contrà´le de ce que tu veux faire. Mais ce n'est pas étonnant si ça marche. Il y a des outils qui te génère des Makefile automatiquement en fonctions de certaines entrées. Ca doit être un peu le même principe.


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#5 Le 13/02/2008, à 02:32

vieurou

Re : Probleme de compil d'une librairie .so

ouais ça fonctionne ,
j'ai réussi à  compiler avec libtool en 64bit , et même en 32 mais je sais plus comment et surtout je n'arrive pas à  le refaire... si quelqu'un peut m'eclairer
j'ai même réussi avec eclipse , le souci venais de l'interface chaise-clavier , j'ai mis l'option -fPIC au linkage et pas à  la compil....

donc il me reste un souci principal, la compil en 32bit a partir de mon système 64bit, comme les librairie linkée sont en 64bit et que je veut en construire une en 32, gcc m'envoie bouller...
y a t'il une façon d'installer les lib 32 sur mon 64 afin que je puisse y arriver ?

j'ai rechercher sur les dépà´t mais apparemment c'est pas dispo ...
(les lib qui m'interresse sont libglew et libglut)

merci , bonne fin de nuit

Hors ligne