Chargement d'une librairie via dlopen
Lolienette
Messages postés
1
Statut
Membre
-
pyschopathe Messages postés 2053 Statut Membre -
pyschopathe Messages postés 2053 Statut Membre -
Bonjour,
Je m'adresse à vous car je me trouve dans une impasse.
Voilà, je souhaite ajouter une UDF à MySQL. Pour celà je dois charger la librairie correspondant à mon UDF dans /usr/lib. Cependant, je ne suis pas le root du système, je ne peux demander le mot de passe, je ne suis que stagiaire...
Par conséquent, j'ai décidé de passer par dlopen.
Voici le code mon udf :
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <mysql/mysql.h>
#include <pthread.h>
//#include "hello_wolrd.sql"
char Hello_World ()
{
printf ("Hello World !\n");
return (0);
}
voici le code pour la copie de la lmibrairie :
#include <dlfcn.h>
#include <stdio.h>
int main ()
{
char * erreur;
void * handle = dlopen ("/home/aurelie/devel/udf-hellowolrd/src/ hello_world.so", RTLD_GLOBAL);
if (! handle)
{
fputs (dlerror (), stderr);
exit(1);
}
if ((erreur = dlerror()) != NULL)
{
fprintf (stderr, "%s0, error);
exit(1);
}
dlclose (handle);
}
Je compile donc l'udf avec
gcc -shared -o hello_world.so hello_world.c
Je complile le second avec
gcc -rdynamic -o hello_world.so hello_world.c -ldl
Et j'obtiens, toujours ce message :
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: dans la fonction « _start »:
../sysdeps/i386/elf/start.S:115: référence indéfinie vers « main »
collect2: ld returned 1 exit status
J'ai essayé en ne compilant pas l'udf au préalable, mais j'obtiens le même message.
Merci à l'avance pour votre aide
Je m'adresse à vous car je me trouve dans une impasse.
Voilà, je souhaite ajouter une UDF à MySQL. Pour celà je dois charger la librairie correspondant à mon UDF dans /usr/lib. Cependant, je ne suis pas le root du système, je ne peux demander le mot de passe, je ne suis que stagiaire...
Par conséquent, j'ai décidé de passer par dlopen.
Voici le code mon udf :
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <mysql/mysql.h>
#include <pthread.h>
//#include "hello_wolrd.sql"
char Hello_World ()
{
printf ("Hello World !\n");
return (0);
}
voici le code pour la copie de la lmibrairie :
#include <dlfcn.h>
#include <stdio.h>
int main ()
{
char * erreur;
void * handle = dlopen ("/home/aurelie/devel/udf-hellowolrd/src/ hello_world.so", RTLD_GLOBAL);
if (! handle)
{
fputs (dlerror (), stderr);
exit(1);
}
if ((erreur = dlerror()) != NULL)
{
fprintf (stderr, "%s0, error);
exit(1);
}
dlclose (handle);
}
Je compile donc l'udf avec
gcc -shared -o hello_world.so hello_world.c
Je complile le second avec
gcc -rdynamic -o hello_world.so hello_world.c -ldl
Et j'obtiens, toujours ce message :
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: dans la fonction « _start »:
../sysdeps/i386/elf/start.S:115: référence indéfinie vers « main »
collect2: ld returned 1 exit status
J'ai essayé en ne compilant pas l'udf au préalable, mais j'obtiens le même message.
Merci à l'avance pour votre aide
A voir également:
- Chargement d'une librairie via dlopen
- Via michelin carte - Télécharger - Transports & Cartes
- ViaMichelin - Télécharger - Transports & Cartes
- Échec du chargement du module twitch ✓ - Forum Virus
- Échec du chargement du module. ✓ - Forum Virus
- Logitech g hub chargement infini - Forum Logiciels