lib gmp

Le
remy
bonjour

je cherche à faire fonctionner l'exemple
qu'il y a dans le répertoire démo de la librairie gmp
http://gmplib.org/

ou en gros après installation

./configure
./make
sudo ./make installe

sudo make check

remy@remy-desktop:~/Desktop/Mydriver2$ locate gmp.h
/usr/local/include/gmp.h




gedit test.c



#include <stdlib.h>
#include <string.h>
#include <stdio.h>
//#include "gmp.h"

#include "/usr/local/include/gmp.h"

int main (int argc, char **argv)
{
mpz_t n;

mpz_init (n);
}


remy@remy-desktop:~/Desktop/Mydriver2$ cc test.c
/tmp/ccISe3aS.o: In function `main':
test.c:(.text+0x18): undefined reference to `__gmpz_init'
collect2: ld a retourné 1 code d'état d'exécution
remy@remy-desktop:~/Desktop/Mydriver2$


en gros il ne trouve pas les objets pour le linchage
ce que me confirme locate gmp.o

et pour finir j'ai les mêmes problèmes si je passe par une installation
dite normale avec synaptie

je me permets de rajouter que le c et les environnements ne sont pas ma
tasse de thé donc
l'on y va doucement même tout doucement dans les explications

merci

remy

os Ubuntu 7.04 Feisty Fawn
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
candide
Le #16638361
remy a écrit :

./configure
./make
sudo ./make installe

sudo make check

:~/Desktop/Mydriver2$ locate gmp.h
/usr/local/include/gmp.h
...





Tu aimes vivre dangereusement. Moi j'ai installé gmp au clickodrome Synaptic




#include #include #include //#include "gmp.h"

#include "/usr/local/include/gmp.h"

int main (int argc, char **argv)
{
mpz_t n;

mpz_init (n);
}




Heu là tu m'etonnes, je doute que ce soit l'exemple de test original,
d'abord en général ces exemples de tests sont évidemment ultra surchargé
et ensuite le code ci-dessus contient des comportements indéterminés.




en gros il ne trouve pas les objets pour le linchage
ce que me confirme locate gmp.o





et pour finir j'ai les mêmes problèmes si je passe par une installation
dite normale avec synaptie



Je te rappelle que pour linker gmp, il faut terminer par -lm dans la
ligne de commande, exemple chez moi :

$ gcc -o x test.c -lgmp
candide
Le #16638351
candide a écrit :

Je te rappelle que pour linker gmp, il faut terminer par -lm dans la



correction : lire : -lgmp

comme dans l'exemple donné en dessous.

ligne de commande, exemple chez moi :

$ gcc -o x test.c -lgmp


espie
Le #16640471
In article
bonjour

je cherche à faire fonctionner l'exemple
qu'il y a dans le répertoire démo de la librairie gmp
http://gmplib.org/

ou en gros après installation

./configure
./make
sudo ./make installe



En tres gros alors, hein. Meme s'il y a des francais dans le lot, ca
m'etonnerait que make installe fonctionne...
remy
Le #16640451
candide a écrit :


Tu aimes vivre dangereusement. Moi j'ai installé gmp au clickodrome
Synaptic




avec le clickodrome je ne sais pas sur quoi agir qd cela ne marche pas
même si je doute que cela vienne de mon inexpérience




Heu là tu m'etonnes, je doute que ce soit l'exemple de test original,
d'abord en général ces exemples de tests sont évidemment ultra surchargé
et ensuite le code ci-dessus contient des comportements indéterminés.




exact c'était juste un test histoire d'avancer




Je te rappelle que pour linker gmp, il faut terminer par -lm dans la
ligne de commande, exemple chez moi :

$ gcc -o x test.c -lgmp



ok merci

#include #include #include //#include "gmp.h"

#include "/usr/local/include/gmp.h"

int main (void)
{
mpz_t n;
mpz_init (n);

int class;
if (mpz_set_str (n, "3623", 0) != 0) puts (" pb init");;

class = mpz_probab_prime_p (n, 5);

if (class == 0)
puts (" merde");
else if (class == 1)
puts (" ok ");

}

gcc essai.c -lgmp -o essai

compilation ok

:~/Desktop/Mydriver2$ ./essai
./essai: error while loading shared libraries: libgmp.so.3: cannot open
shared object file: No such file or directory
:~/Desktop/Mydriver2$


.../Mydriver2$ locate libgmp
/usr/local/lib/libgmp.so.3.4.3
/usr/local/lib/libgmp.so
/usr/local/lib/libgmp.so.3
/usr/local/lib/libgmp.la
/usr/local/lib/libgmp.a
/usr/lib/ssl/engines/libgmp.so
....
.../Mydriver2$ path=/usr/local/lib:$PATH
.../Mydriver2$ export path
:~/Desktop/Mydriver2$ ./essai
./essai: error while loading shared libraries: libgmp.so.3: cannot open
shared object file: No such file or directory
:~/Desktop/Mydriver2$


donc la compilation passe bien mais pas l'exécution une idée peut être

merci remy
espie
Le #16640441
In article
./essai: error while loading shared libraries: libgmp.so.3: cannot open
shared object file: No such file or directory
:~/Desktop/Mydriver2$


donc la compilation passe bien mais pas l'exécution une idée peut être

merci remy



faut que tu expliques a ton systeme que la bibliotheque est accessible.
Soit un probleme de path de bibliotheques partagees, soit un probleme
de cache.

RTFM, man ldconfig
Thierry B.
Le #16644331
--{ remy a plopé ceci: }--

:~/Desktop/Mydriver2$ ./essai
./essai: error while loading shared libraries: libgmp.so.3: cannot open
shared object file: No such file or directory



Où est le _vrai_ rapport avec le langage C ?

.../Mydriver2$ export path



OK, c'est bon, tu fais du shot-gun programming.

--
:/u/tth/Animations/Parking$ uptime
16:37:12 up 80 days, 21:15, 21 users, load average: 10.36, 8.64, 7.46
remy
Le #16639991
Marc Espie a écrit :
In article
./essai: error while loading shared libraries: libgmp.so.3: cannot open
shared object file: No such file or directory
:~/Desktop/Mydriver2$


donc la compilation passe bien mais pas l'exécution une idée peut être

merci remy



faut que tu expliques a ton systeme que la bibliotheque est accessible.
Soit un probleme de path de bibliotheques partagees, soit un probleme
de cache.

RTFM, man ldconfig



ok maintenant cela semble fonctionner je dirais même que cela fonctionne



:~/Desktop/Mydriver2$ gcc essai.c -lgmp -o essai
:~/Desktop/Mydriver2$ ./essai
ok class= 2
:~/Desktop/Mydriver2$

mais cela n'est que la première étape
le but du jeu étant de se servir de cette librairie dans un module du noyau

donc
#include "/usr/local/include/gmp.h"
....
ssize_t my_read( struct file *p_file, char __user * p_data, size_t size,
loff_t* p_offset )
{
mpz_t n;
mpz_init (n);
return 1;
}


par exemple

avec 2 fichiers récupérés et modifiés un peu au pif
le premier makefile

#
# Makefile pour driver a la sauce remy
#

#ifndef KERNEL_SOURCE
KERNEL_SOURCE=/lib/modules/`uname -r`/build/
#endif

#ifndef KERNEL_VERSION
KERNEL_VERSION=$(basename $(shell uname -r))
#endif

#ifndef FIRMWARE
FIRMWARE=zd1201.fw zd1201-ap.fw
#endif

ifneq ($(KERNEL_VERSION),2.6)
$(error Kernel version ${KERNEL_VERSION} not supported by this driver.)
endif

INSTALL = cp -p -f

default: modules

modules:
make -C ${KERNEL_SOURCE} M=${PWD} modules

clean:
make -C ${KERNEL_SOURCE} M=${PWD} clean

install: modules_install

modules_install:
make -C ${KERNEL_SOURCE} M=${PWD} modules_install


et un deuxième
Makefile
obj-m := Mydriver.o

cela fonctionne très bien
/Mydriver2$ make
make -C /lib/modules/`uname -r`/build/ M=/home/remy/Desktop/Mydriver2
modules
make[1]: entrant dans le répertoire «
/usr/src/linux-headers-2.6.20-17-generic »
CC [M] /home/remy/Desktop/Mydriver2/Mydriver.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/remy/Desktop/Mydriver2/Mydriver.mod.o
LD [M] /home/remy/Desktop/Mydriver2/Mydriver.ko
make[1]: quittant le répertoire «
/usr/src/linux-headers-2.6.20-17-generic »
:~/Desktop/Mydriver2$

par contre avec les 2 lignes rajoutées dans le code

mpz_t n;
mpz_init (n);

:~/Desktop/Mydriver2$ make
make -C /lib/modules/`uname -r`/build/ M=/home/remy/Desktop/Mydriver2
modules
make[1]: entrant dans le répertoire «
/usr/src/linux-headers-2.6.20-17-generic »
CC [M] /home/remy/Desktop/Mydriver2/Mydriver.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "__gmpz_init" [/home/remy/Desktop/Mydriver2/Mydriver.ko]
undefined!
LD [M] /home/remy/Desktop/Mydriver2/Mydriver.ko
make[1]: quittant le répertoire «
/usr/src/linux-headers-2.6.20-17-generic »
:~/Desktop/Mydriver2$

je retrouve mon problème je suppose qu'il faut que je modifie le
makefile au niveau de la commande make une idée sur la modif
parce que moi ....

merci remy
candide
Le #16639981
remy a écrit :
:~/Desktop/Mydriver2$ ./essai
./essai: error while loading shared libraries: libgmp.so.3: cannot open
shared object file: No such file or directory
:~/Desktop/Mydriver2$





Bienvenue sous DOS 6.0 ;)

Bon, j'avais bien raison de dire que tu vis dangereusement. Chez moi, le
code s'exécute mais le sale boulot a été fait automatiquement par
Synaptic. Si tu n'as pas de retour ici, pose ta question sur le
siteduzero, forum C ou forum Linux/mac.
candide
Le #16639971
Marc Espie a écrit :

faut que tu expliques a ton systeme que la bibliotheque est accessible.
Soit un probleme de path de bibliotheques partagees, soit un probleme
de cache.

RTFM, man ldconfig




Voilà aussi pourquoi le C est si long à apprendre.
espie
Le #16639961
In article candide
Marc Espie a écrit :

faut que tu expliques a ton systeme que la bibliotheque est accessible.
Soit un probleme de path de bibliotheques partagees, soit un probleme
de cache.

RTFM, man ldconfig




Voilà aussi pourquoi le C est si long à apprendre.



Ca, c'est du unix, pas du C...

accessoirement, pour installer une bibliotheque tres standard, genre gmp,
le faire a la main, c'est... bizarre.
Publicité
Poster une réponse
Anonyme