Problème à la compilation: Utilisation de QD

Résolu
TorTukiTu Messages postés 31 Date d'inscription samedi 22 avril 2006 Statut Membre Dernière intervention 18 avril 2011 - 18 mai 2009 à 17:17
TorTukiTu Messages postés 31 Date d'inscription samedi 22 avril 2006 Statut Membre Dernière intervention 18 avril 2011 - 18 mai 2009 à 21:47
Bonjour,

Rentrons directement dans le vif du sujet =) . J'ai besoin d'une grande précision pour certaines opérations. Il me faut une précision allant au delà du simple double ou long double.

J'ai par conséquent installé les bibliothèques qd.

L'installation se passe bien, mon compilateur c++: g++
j'utilises le compilateur fortran de gnu (gfortran 95)
et gcc pour le C.

./configure CXX=g++ CC=gcc FC=gfortran
sudo make
sudo make install

J'essaye ensuite de compiler un des exemples pour voir si tout se passe bien, et là c'est le drame.

 g++ qd_test.cpp

/tmp/cc95OHa0.o: In function `main':
qd_test.cpp:(.text+0x278): undefined reference to `fpu_fix_start'
qd_test.cpp:(.text+0x54d): undefined reference to `fpu_fix_end'
/tmp/cc95OHa0.o: In function `TestSuite<dd_real>::test6()':
qd_test.cpp:(.text._ZN9TestSuiteI7dd_realE5test6Ev[TestSuite<dd_real>::test6()]+0x42): undefined reference to `dd_real::_ndigits'

... etc...

Il semblerai q'il ne trouve aucune des fonctions utilisées par qd.

Pourtant tout semble correcte, les includes sont là ou il faut.

Je n'ai pas l'habitude de bosser avec du cpp. Faut-il une option de compilation spécifique?

Merci de votre attention.

Ordinateur : moyen conçu pour accélérer et automatiser les erreurs.

2 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
18 mai 2009 à 19:03
C'est normal.
Si la bibliothèque est dynamique (un .so), alors il faut la binder lorsque tu compiles.

Ex:
Soit la bibliotheque pouet qui porte le nom libpouet.so et soit ton qd_test.cpp.

Alors la ligne de compile devrait être:
g++ qd_test.cpp -lpouet -L.

Avec
-l le nom de la bibliothèque, sans le "lib" et sans le ".so".
-L le chemin vers le lieu ou se situe ta bibliothèque.

J'ajouterais aussi:
"g++ -W -Wall -Wextra -Wabi -Werror -O3 -pedantic qd_test.cpp -lpouet -L." en mode release
"g++ -W -Wall -Wextra -Wabi -g -pedantic qd_test.cpp -lpouet -L." en mode debug
3
TorTukiTu Messages postés 31 Date d'inscription samedi 22 avril 2006 Statut Membre Dernière intervention 18 avril 2011 1
18 mai 2009 à 21:47
Merci beaucoup de ton aide.

Problème résolu.

Ordinateur : moyen conçu pour accélérer et automatiser les erreurs.
0
Rejoignez-nous