OVH Cloud OVH Cloud

lib gmp

36 réponses
Avatar
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

10 réponses

1 2 3 4
Avatar
candide
Thierry B. a écrit :
--{ candide a plopé ceci: }--

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.



Quel est le rapport avec la langage C ?




Parce que connaître le langage C, ce n'est pas connaître un langage pur
et éthéré, c'est savoir l'utiliser avec des bibliothèques (non standard
donc) ou c'est savoir utiliser un compilateur par exemple ou encore
c'est savoir comprendre que c'est le linker qui vous envoie un message,
etc. Et donc, quand tu fais man gcc ou man ldconfig et que par exemple
la doc n'est pas installée ou que les caractères accentués sortent
bizarroides, tu dois trouver une solution de remplacement ce qui te
conduit à d'autres manoeuvres qui elles aussi vont en partie échouer par
ce que tu ne sais pas vu que tu débutes. Ça peut être aussi que tu ne
comprends rien aux pages man, etc. Et puis, quand on parle de
bibliothèque, on est amené à s'interroger à ce qu'est une bibliothèque
statique, une bibliothèque dynamique, etc, toutes choses qui semblent
faciles quand on connait mais qui rebute le débutant. Tout ça n'a
fondamentalement rien à voir avec le le langage C et pourtant on est
bien obligé de passer par là pour en faire de manière tangible. Bon,
tout ça pour dire que les 150 pages du K&R ne sont que la partie émergée
de l'iCeberg et peut-être même la partie la plus facile.
Avatar
espie
In article <48b5caac$0$14426$,
candide wrote:
etc. Et donc, quand tu fais man gcc ou man ldconfig et que par exemple
la doc n'est pas installée ou que les caractères accentués sortent
bizarroides, tu dois trouver une solution de remplacement ce qui te



T'as aussi le droit d'installer un Unix qui fonctionne avec une doc correcte
et decente a la base, hein...
Avatar
candide
Marc Espie a écrit :


T'as aussi le droit d'installer un Unix qui fonctionne avec une doc correcte
et decente a la base, hein...



J'ai même le droit d'installer free BSD. C'est pas tout d'avoir le
droit, faut aussi avoir les moyens de l'installer et de l'utiliser.
Tiens je te donne un exemple, sur ma distrib (Ubuntu) si je fais man
printf, il me renvoie la doc de la fonction printf, très bien (au
passage, je préfère regarder directement dans la Norme version papier
voire pdf parce que là encore, savoir exploiter complètement les pages
man n'est pas du tout intuitif et nécessite un apprentissage ad hoc).
Maintenant, si je fais man exp, voilà ce que j'ai :

No manual entry for exp


Pourquoi c'est comme ça ? j'en sais rien. Ce que je sais c'est que si je
commence à chercher à résoudre ce problème, j'en ai pour deux heures.
Bon, en fait, j'en sais rien, peut-être pour 1/4h peut-être une matinée.
Moi, j'ai décidé de faire du C, pas d'apprendre Unix.


La encore, le problème fondamental est le problème de la documentation,
de sa lisibilité et de son accessibilité. Comme je l'ai déjà dit, la doc
est récursive : pour connaître la doc, faut connaître la doc.
Avatar
Mickaël Wolff
candide a écrit :

Moi, j'ai décidé de faire du C, pas d'apprendre Unix.



C'est à mon sens, indissociable.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
candide
Mickaël Wolff a écrit :
candide a écrit :

Moi, j'ai décidé de faire du C, pas d'apprendre Unix.



C'est à mon sens, indissociable.




Historiquement oui. Pour le reste ...

Je ne te cache pas que les cours de C qui _commencent_ par le
sacro-saint laïus sur l'histoire du C et son lien avec Unix et toute la
liturgie m'agacent profondément. Ça me fait penser à des cours de
marxisme. Je ne suis pas contre qu'on en parle, ce qui m'énerve c'est
qu'on commence par ça.
Avatar
YBM
candide a écrit :
Pourquoi c'est comme ça ? j'en sais rien. Ce que je sais c'est que si je
commence à chercher à résoudre ce problème, j'en ai pour deux heures.
Bon, en fait, j'en sais rien, peut-être pour 1/4h peut-être une matinée.



Pas besoin d'être un gourou pour faire :

$ sudo apt-get install manpages<tab><tab>
...
manpages-dev
...

ou utiliser synaptic

Moi, j'ai décidé de faire du C, pas d'apprendre Unix.



Ç'est pas gagné ça...
Avatar
candide
YBM a écrit :


Pas besoin d'être un gourou pour faire :

$ sudo apt-get install manpages<tab><tab>



Pas besoin d'être un génie pour écrire

E comme Emile
= (deux petits traits superposés)
m comme mémé
c comme fclc
2 (un plus un quoi)

suffit de savoir écrire.
Avatar
candide
YBM a écrit :

...
manpages-dev
...




Ok sinon merci, ça a marché, c'était le mot clé qui me manquait. Ainsi
maintenant :


:~$ man exp



EXP(3) Linux Programmer’s
Manual EXP(3)

NAME
exp, expf, expl - base-e exponential function

SYNOPSIS
#include <math.h>

double exp(double x);
float expf(float x);
long double expl(long double x);

Link with -lm.

DESCRIPTION
The exp() function returns the value of e (the base of natural
logarithms) raised to the power of x.

CONFORMING TO
SVr4, 4.3BSD, C89, C99, POSIX.1-2001. The float and long double
variants are C99 requirements.

SEE ALSO
cbrt(3), cexp(3), exp10(3), exp2(3), sqrt(3)
Avatar
Thierry B.
--{ candide a plopé ceci: }--

Maintenant, si je fais man exp, voilà ce que j'ai :
No manual entry for exp

Pourquoi c'est comme ça ? j'en sais rien.



Parce que c'est une Debian, et qu'ils fragmentent les choses.

Exemple: les bibliothèques genre readline -> d'un coté les binaires,
de l'autre coté les .h et la doc. Et quand on ne fait pas gaffe à
installer foobar _et_ foobar-dev, une Debian pour programmer, c'est
l'enfer...

La encore, le problème fondamental est le problème de la documentation,
de sa lisibilité et de son accessibilité.



Il faut installer un truc qui ressemble plus à Unix, voire même
un véritable Unix.

--
La buvette sera fermée demain toute la journée: on rase gratis.
Avatar
espie
In article <48b5f0d2$0$9046$,
candide wrote:
Je ne te cache pas que les cours de C qui _commencent_ par le
sacro-saint laïus sur l'histoire du C et son lien avec Unix et toute la
liturgie m'agacent profondément. Ça me fait penser à des cours de
marxisme. Je ne suis pas contre qu'on en parle, ce qui m'énerve c'est
qu'on commence par ça.



chouet, je t'enerverais alors.

Ca presente pourtant quantite d'avantages.
- Typiquement, tous les langages de programmation contiennent quantite
d'arbitraire. En savoir un peu plus sur les gens qui les ont crees, et le
contexte sous-jacent, peut aider grandement a comprendre certaines de leurs
idiosyncrasies.
- La norme est bien jolie, mais il y a quantite de choses dedans qui sont
difficilement comprehensibles sans exegese et sans comprendre d'ou elles
sortent. Meme si la norme a ete ecrite a plusieurs voix, elle cherche en
grande partie a coller avec l'existant, et les voix du monde unix sont une
influence majeure sur celle-ci.
- Il y a moult choses en C qui font du sens sous unix et pas forcement
ailleurs: le lancement des programmes (en particulier, l'importance du
exit), les entrees-sorties par defaut, le modele memoire (l'initialisation
des static a 0, au hasard).

et j'en passe...
1 2 3 4