Précédent   Forum du club des développeurs et IT Pro > Autres langages > Perl > Modules
Modules Toutes vos questions sur l'utilisation, l'installation, la création de modules Perl sous Windows/Linux/Unix/MacOS. Avant de poster, veuillez consulter les FAQs perl, les cours Perl et les sources Perl.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/12/2012, 16h31   #1
brunoperel
Inscrit
 
Inscription : novembre 2006
Messages : 171
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2006
Messages : 171
Points : 26
Points : 26
Par défaut Erreur de compilation en utilisant la librairie partagée de MySQL (fPIC)

Bonjour,

Je cherche à compiler un module Perl (DBIx MyParse) qui utilise la librairie MySQL. J'obtiens l'erreur suivante lors du "make install" de ce module :
Code :
1
2
/usr/bin/ld: /usr/src/mysql-5.0.45//libmysqld/libmysqld.a(my_thr_init.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
/usr/src/mysql-5.0.45//libmysqld/libmysqld.a: could not read symbols: Bad value
Alors, j'ai cherché un peu partout. J'ai trouvé notamment ce topic où la personne rencontrait un problème similaire. Problème : en ajoutant la fameuse option "-fPIC", pas mieux !

Comme je ne veux pas me risquer à modifier le Makefile de MySQL, j'ai ajouté l'option dans le configure :
Code :
./configure --with-embedded-server --enable-shared --with-pic
Faut-il faire autre chose que ça ? La version de MySQL que j'utilise est la 5.0.45 .

Merci d'avance si vous avez des idées
brunoperel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2013, 22h36   #2
brunoperel
Inscrit
 
Inscription : novembre 2006
Messages : 171
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2006
Messages : 171
Points : 26
Points : 26
Bonjour,

Je me permets de remonter ce topic car j'ai repris le sujet et j'ai compris quelque chose qui m'avait échappé : en fait le problème est que les 2 projets (MySQL + le module Perl) doivent être compilés avec fPIC pour pouvoir interagir ? Quelqu'un connaît-il ces mécanismes-là ? Du coup j'ai changé les arguments de ./configure pour MySQL :
Code :
./configure --with-embedded-server --enable-shared
... ainsi que le Makefile.PL du module, qui si j'ai bien compris permet de générer un Makefile "classique" : j'ai changé la valeur de CCFLAGS qui dans Makefile.PL était rempli avec ça :
Code :
1
2
3
4
5
my $ccflags = `grep "^CXXFLAGS =" $makefile_path`;
 
$ccflags =~ s{^CXXFLAGS = }{}sio;
$ccflags =~ s{[\r\n\t]}{}sio;
$ccflags .= " -DNO_EMBEDDED_ACCESS_CHECKS ";
et j'ai simplement (naïvement) ajouté l'option fPIC dedans :
Code :
1
2
3
4
5
my $ccflags = `grep "^CXXFLAGS =" $makefile_path`;
 
$ccflags =~ s{^CXXFLAGS = }{}sio;
$ccflags =~ s{[\r\n\t]}{}sio;
$ccflags .= " -fPIC -DNO_EMBEDDED_ACCESS_CHECKS ";
.

Le Makefile est bien généré quand je lance , et ensuite quand je lance je vois bien mon option -fPIC qui apparait dans la log ; mais l'erreur est toujours là comme avant.

A défaut d'une solution, quelqu'un peut-il m'expliquer d'où vient le problème puisque j'ai mis l'option -fPIC pour les deux ?


Merci d'avance !
brunoperel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h19.


 
 
 
 
Partenaires

Hébergement Web