Probl=c3=a8me de compilation avec gcc 9.2 (debian/testing)

Le
BERTRAND Jo=c3=abl
Bonjour à tous,

Depuis la mise à jour de mon poste de travail (debian/testing), j'ai un
problème de compilation assez surprenant que je n'arrive à résoudre.

Sources :
http://www.rpl2.fr/download/rpl-4.1.31-daily-20191027.tar.bz2

Procédure de compilation :
./autogen.sh
cd ..
mkdir build
cd build
../rpl/configure --enable-native --enable-rplcas

Et attendre l'erreur :
g++ -g -O2 -mtune=native -march=native -O2 -malign-double -Wall
-funsigned-char -fpermissive -fno-strict-aliasing
-DGIAC_GENERIC_CONSTANTS -pthread -o icas icas.o
/export/home/bertrand/gopher/rpl2/build-amd64/rplcas/giac-1.5.0/src/.libs/libgiac.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libpari.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/ntl.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libcocoa.a
/import/home/bertrand/gopher/rpl2/build-amd64/tools/gsl-2.6/.libs/libgsl.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libgmp.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libmpfr.a
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libmpfi.a
./.libs/libxcas.a
/export/home/bertrand/gopher/rpl2/build-amd64/rplcas/giac-1.5.0/src/.libs/libgiac.a
-lrt -lpthread /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so -lsamplerate
-llapack -lblas -lgfortran -ldl -lpng16 -lm -pthread
/usr/bin/ld:
/import/home/bertrand/gopher/rpl2/build-amd64/rplcas/lib/libmpfr.a(get_z_exp.o):
référence au symbole non défini « __gmpz_realloc2 »
/usr/bin/ld : /usr/lib/x86_64-linux-gnu/libgmp.so.10 : erreur lors de
l'ajout de symboles : DSO manquant dans la ligne de commande
collect2: error: ld returned 1 exit status

Pour un certain nombre de raisons, les bibliothèques sont compilées
statiquement (ça permet de ne pas segfaulter lorsque l'on charge des
modules externes).

L'erreur varie en fonction de l'ordre des bibliothèques. Avec gcc 8, ça
compile sans problème.

mpfr est configuré comme suit :
../../../rpl/rplcas/mpfr-4.0.2/configure
--with-gmp=/import/home/bertrand/gopher/rpl2/build-amd64/rplcas
--disable-shared --enable-static
--prefix=/import/home/bertrand/gopher/rpl2/build-amd64/rplcas
et le script configure trouve bien les en-têtes et la version statique
de libgmp.

Naturellement, le symbole non trouvé est bien présent dans la
bibliothèque libgmp.a :
rayleigh:[~/gopher/rpl2/build-amd64/rplcas/lib] > nm -a libgmp.a | grep
__gmpz_realloc2
0000000000000000 T __gmpz_realloc2

J'avoue que je ne sais plus où chercher. Toute idée est la bienvenue.

Bien cordialement,

JKB
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
BERTRAND Jo=c3=abl
Le #26530009
Je me réponds à moi-même. Le problème provient à la fois de binutils et
d'automake.
Binutils parce que le linker est beaucoup plus tatillons sur l'ordre
des bibliothèques quand elles sont réentrantes. Et automake, parce que
celui-ci gère l'ordre des bibliothèques un peu comme il le décide
(l'ordre des bibliothèques sur la ligne de commande change entre
debian/stable et debian/testing, je n'ai pas encore compris pourquoi).
JKB
Publicité
Poster une réponse
Anonyme