Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

librairie GMP (et incompétance...).

5 réponses
Avatar
Tanguy Briançon
Bonjour,

J'ai télécharger puis installer la librairie gmp
en faisant la trilogie
./configure
make
make install

Puis j'ai fait:

> gcc primes.c primes.o
> gcc: primes.o : Aucun fichier ou dossier de ce type
> [briancon@localhost demos]$ gcc primes.c -o primes.o
> /home/briancon/tmp/ccAUbHqN.o: In function `report':
> primes.c:(.text+0x34): undefined reference to `__gmpz_out_str'
> primes.c:(.text+0x5d): undefined reference to `__gmpz_get_ui'
> primes.c:(.text+0x85): undefined reference to `__gmpz_get_ui'
> /home/briancon/tmp/ccAUbHqN.o: In function `main':
...
> collect2: ld a retourné 1 code d'état d'exécution

Il doit y avoir un truc idiot j'ai du oublié de faire?

Le début du fichier primes.c
>
> #include <stdlib.h>
> #include <stdio.h>
> #include <string.h>
> #include <math.h>
> #include <assert.h>

puis des commentaires et

#include "gmp.h"

Le programme suivant compile

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <assert.h>
#include "gmp.h"

void main()
{ printf("Hello world");}

5 réponses

Avatar
Xavier Roche
Le 12/02/2012 19:52, Tanguy Briançon a écrit :
gcc primes.c primes.o





Humm, ici, on produit un exécutable du nom de primes.o -- c'est étrange :)

Il vaudrait mieux:
gcc primes.c primes
(produire un exécutable -- il manque un -lgmp probablement ici)
-ou-
gcc -c primes.c -o primes.o
puis gcc -shared -fPIC primes.o -lgmp -o primes

Et je conseillerai d'utiliser au minimum:
-W -Wall
Avatar
Xavier Roche
Le 12/02/2012 19:52, Tanguy Briançon a écrit :
gcc primes.c primes.o





Humm, ici, on produit un exécutable du nom de primes.o -- c'est étrange :)

Il vaudrait mieux:
gcc primes.c -lgmp -o primes
(produire un exécutable -- il manque un -lgmp probablement ici)
-ou-
gcc -c primes.c -o primes.o
puis gcc -shared -fPIC primes.o -lgmp -o primes

Et je conseillerai d'utiliser au minimum:
-W -Wall
pour repérer les fautes les plus évidentes dans le code C.
Avatar
Antoine Leca
Xavier Roche écrivit :
gcc -c primes.c -o primes.o
puis gcc -shared -fPIC primes.o -lgmp -o primes


^^^^^^^^^^^^^
Pourquoi faut-il ces options, là ?

Chez moi cela construit une DLL avec extension .exe, et l'OS me dit
« primes.exe n'est pas une application valide. »


Antoine
Avatar
espie
In article <jhanqp$87f$,
Antoine Leca wrote:
Xavier Roche écrivit :
gcc -c primes.c -o primes.o
puis gcc -shared -fPIC primes.o -lgmp -o primes


^^^^^^^^^^^^^
Pourquoi faut-il ces options, là ?

Chez moi cela construit une DLL avec extension .exe, et l'OS me dit
« primes.exe n'est pas une application valide. »



Il ne faut pas, je ne sais pas ce qu'il a fume.
-shared -fPIC, ca sert uniquement a faire des bibliotheques ("shared objects"
chez ELF), et je ne vois pas du tout ce que ca vient faire la.

Perso, ca me fait toujours tout bizarre d'avoir la ligne de gcc dans un
ordre non "traditionnel".

Quasiment tout le monde ecrit
gcc -o primes -O2 -W -Wall primes.c -lgmp
Avatar
Xavier Roche
Le 13/02/2012 11:14, Antoine Leca a écrit :
Chez moi cela construit une DLL



Oui, j'étais parti sur la construction d'une lib, autant pour moi.

Ça m'apprendra à ne pas me relire suffisamment :)